我试图将消息驱动的Bean与Weblogic 10.3.5上的Oracle JCA文件适配器(包含在SOA套件中)绑定。这样,当任何.txt文件移动到特定目录时,我的MDB都可以得到通知。
启动支持SOA功能的Weblogic域后,将自动部署文件适配器。在Weblogic控制台上,我可以看到文件适配器已部署为“资源适配器”,运行状况为“确定”,状态为“活动”,如下所示:

我也运行了文件适配器的测试,并且都通过了:

因此,我认为文件适配器已正确部署并且应该可以正常工作。
然后我的消息驱动bean代码如下所示:
import java.util.logging.Logger;
import javax.ejb.MessageDriven;
import javax.resource.ResourceException;
import javax.resource.cci.MessageListener;
import javax.resource.cci.Record;
@MessageDriven
public class FileAdapterClientMDB implements MessageListener {
private Logger logger = Logger.getLogger(FileAdapterClientMDB.class.getName());
public FileAdapterClientMDB() {
}
@Override
public Record onMessage(Record record) throws ResourceException {
logger.info("Received record: " + record);
return record;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的ejb-jar.xml文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0">
<display-name>MockEJB</display-name>
<enterprise-beans>
<message-driven>
<description>EMessage Driven Bean as File Adapter Client</description>
<display-name>FileAdapterClientMDB</display-name>
<ejb-name>FileAdapterClientMDB</ejb-name>
<ejb-class>com.test.FileAdapterClientMDB</ejb-class>
<messaging-type>javax.resource.cci.MessageListener</messaging-type>
<transaction-type>Container</transaction-type>
<activation-config>
<activation-config-property> …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行connectorZ JCA 1.6 Executor实现,
为此我从github下载了Zip并尝试执行客户端,
(工作管理器:java.util.concurrent.Executor的JCA实现)
我能够在Eclipse中运行应用程序,(在解决了一些依赖性问题之后)
jsp页面正常加载链接"执行5个阻塞任务",
当我点击特定链接时,我得到以下异常:
Caused by: java.lang.NullPointerException
at org.connectorz.threading.ThreadsResource.overload(ThreadsResource.java:72) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_40]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_40]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_40]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_40]
Run Code Online (Sandbox Code Playgroud)
这里的问题是executorFactory为null,我不确定jndi_name" jca/workmanager ".
@Resource(name="jca/workmanager")
WorkExecutorFactory executorFactory; //NPE at executorFactory(not injecting).
Run Code Online (Sandbox Code Playgroud)
我是否缺少与jndi或任何资源文件相关的任何配置?
我该如何解决这个问题?
我知道Sun/Oracle JVM中的关键因为司法原因而受到限制.但是据我所知,JCE(Java Cryptography Extension)的概念是用户可以选择自己的安全提供程序来弥补这一限制.
出于这个原因,我试图将Bounce Castle作为安全提供程序与Orcale JDK 1.7一起运行.
为了弄清楚我使用此代码的实际允许的keylegth:
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import java.security.GeneralSecurityException;
import java.security.Provider;
import java.security.Security;
public class JCETest {
public static void main( String[] args ) throws GeneralSecurityException
{
BouncyCastleProvider bouncyCastleProvider = new BouncyCastleProvider();
Security.addProvider(bouncyCastleProvider);
System.out.println( "\nSecurity-Provider:" );
for( Provider prov : Security.getProviders() ) {
System.out.println( " " + prov + ": " + prov.getInfo() );
}
System.out.println( "\nMaxAllowedKeyLength (for '" + Cipher.getInstance("AES").getProvider() + "' using current 'JCE Policy Files'):\n" …Run Code Online (Sandbox Code Playgroud) 我们有自定义的 JCE 安全提供商,它使用我们的智能卡来执行加密操作。
当我们尝试使用某些类(如Cipher、KeyAgreement、KeyGenerator、Mac 或 SecretKeyFactory)时,我们会遇到问题。
Java抛出异常:
Exception in thread "main" java.security.NoSuchProviderException: JCE cannot authenticate the provider Foo
Run Code Online (Sandbox Code Playgroud)
我在这里和这里读到,如果您尝试使用自定义 JCE 安全提供程序进行加密,则必须对它进行签名。这是因为一些政府中有关密码学的一些法律。
我还阅读了这篇文章: 如何签署自定义 JCE 安全提供程序
看来建议是向 Oracle 邮寄一些有关您公司/产品的信息并发送 csr,以便他们可以颁发可用于代码签名且有效期为 5 年的证书。
我的问题是,有什么办法可以解决这个问题以进行测试吗?例如,通过更改某些策略或对 JAR 进行自签名。我们尝试对 JAR 进行自签名,但没有成功,也许我们做错了什么。
有没有人在没有获得 Oracle 证书的情况下幸运地解决了这个问题?
最后,我们将申请证书,但我读到最多可能需要 10 天才能得到回复,我们需要这个来进行测试。
我想在 Liberty 应用程序服务器上激活自定义消息侦听器。
这是我的代码:
@MessageDriven(name = "Receiver")
public class Receiver implements InboundListener {
@Override
public void receiveMessage(String message) {
System.out.println("Message Received : " + message);
}
}
Run Code Online (Sandbox Code Playgroud)
这是 server.xml :
<?xml version="1.0" encoding="UTF-8"?>
<server description="Dandelion IOT server">
<featureManager>
<feature>cdi-2.0</feature>
<feature>beanValidation-2.0</feature>
<feature>appSecurity-3.0</feature>
<feature>jpa-2.2</feature>
<feature>jaxrs-2.1</feature>
<feature>jsonb-1.0</feature>
<feature>jsonp-1.1</feature>
<feature>managedBeans-1.0</feature>
<feature>websocket-1.1</feature>
<feature>ejbLite-3.2</feature>
<feature>jca-1.7</feature>
<feature>jndi-1.0</feature>
<feature>mdb-3.2</feature>
<feature>localConnector-1.0</feature>
</featureManager>
<library id="DandelionLibs">
<fileset dir="/etc/dandelion/lib" includes="*.jar"/>
</library>
<jdbcDriver id="database-driver" libraryRef="DandelionLibs"/>
<dataSource jndiName="JTA-DataSource" transactional="true" jdbcDriverRef="database-driver">
<properties databaseName="${database.name}" serverName="${database.hostname}" portNumber="${database.port}"
user="${database.username}" password="${database.password}"/>
</dataSource>
<resourceAdapter id="dra" autoStart="true" location="/etc/dandelion/lib/RA.rar"/>
<connectionFactory jndiName="h5/sampleConnection">
<properties.dra/> …Run Code Online (Sandbox Code Playgroud) 我们有一个在Glassfish 3.1上运行的Java EE应用程序,它需要接受来自用Java编写的遗留系统的通知.此遗留系统提供了一个JAR文件,应该由希望订阅系统通知的任何外部应用程序使用.
在Java SE应用程序中使用时,库的工作方式如下:
我们希望在Java EE中重现相同的方式,即只要系统发送通知就调用EJB方法.
JCA是走的路吗?单例EJB如何初始化库并将自己注册为侦听器?
关于这个主题的好例子很难找到,所以如果你有任何指导,我将不胜感激.
您好,我们使用 JBOSS AS 7.1.1 Final。简单的 JPA Hibernate 架构与 Mysql。
xa-datasource 看起来像:
<xa-datasource jndi-name="java:jboss/datasources/db" pool-name="db" enabled="true" use-java-context="true">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
db
</xa-datasource-property>
<xa-datasource-property name="User">
root
</xa-datasource-property>
<xa-datasource-property name="Password">
xxxxx
</xa-datasource-property>
<xa-datasource-property name="AutoReconnectForPools">
true
</xa-datasource-property>
<xa-datasource-property name="FailOverReadOnly">
false
</xa-datasource-property>
<xa-datasource-property name="MaxReconnects">
100
</xa-datasource-property>
<xa-datasource-property name="ReconnectAtTxEnd">
true
</xa-datasource-property>
<driver>com.mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<check-valid-connection-sql>select 1</check-valid-connection-sql>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
</xa-datasource>
Run Code Online (Sandbox Code Playgroud)
MySQL重启后,JBOSS应该重新连接(reconnect),但是没有发生。请指教
我是Java Connector Architecture(JCA)和Java Enterprise Edition(Java EE)的新手.我一直在阅读JCA 1.6规范,但我不是100%得到所有东西.
所以这里有一些问题:
你能展示一些关于工作/部署MessageEndPoint的简单例子吗?我正在WebSphere Application Server上测试它 - Liberty配置文件
我正在编写一些旧代码,需要更新它才能使用另一个加密提供商。我不是 Java 专家。我试图了解使用javax.crypto.Cipher和签署哈希值之间有什么区别java.security.Signature。
现有代码类似于:
Cipher cipher = Cipher.getInstance(CFG_ALGO);
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] signature = cipher.doFinal(payload);
Run Code Online (Sandbox Code Playgroud)
我收到的使用新提供程序的示例片段如下所示:
final Signature sign = Signature.getInstance("RSA", SIGNATURE_PROVIDER);
sign.initSign(keystore.getPrivateKey(keyName, keyPass));
sign.update(data);
byte[] signature = sign.sign();
Run Code Online (Sandbox Code Playgroud)
如果我为两者使用相同的提供商,两者之间有什么区别吗?一种方式通常优于另一种方式吗?
我最近尝试使用 Wildfly 配置 HikariCP,我想知道,有了 JCA,我是否能够进行标准 JCA 特定配置来适应 HikariCP 连接池?
使用以下命令对文件进行加密:
openssl enc -aes-256-cbc -in file.txt -out file_enc.txt -k 1234567812345678
Run Code Online (Sandbox Code Playgroud)
使用以下命令解密该文件:
openssl enc -d -aes-256-cbc -in file_enc.txt -out file.txt -k 1234567812345678
Run Code Online (Sandbox Code Playgroud)
在java中打印盐和密钥后我得到:
密钥=b796fbb416732ce13d39dbb60c0fb234a8f6d70e49df1c7e62e55e81d33a6bff774254ac99268856bf3afe0b95defdad
在 cmd 中我得到:
盐=2D7C7E1C84BD6693密钥=B796FBB416732CE13D39DBB60C0FB234A8F6D70E49DF1C7E62E55E81D33A6BFF
=774254AC99268856BF3AFE0B95DEFDAD
运行后:
openssl enc -aes-256-cbc -in file.txt -out file_enc.txt -pbkdf2 -k 1234567812345678 -p
我正在使用以下代码,但正在打印加密文件:
public static void main(String args[]) throws InvalidKeySpecException,
NoSuchAlgorithmException,
IllegalBlockSizeException,
InvalidKeyException,
BadPaddingException,
InvalidAlgorithmParameterException,
NoSuchPaddingException,
IOException {
String password = "1234567812345678";
String algorithm = "AES/CBC/PKCS5Padding";
IvParameterSpec ivParameterSpec = AESUtil.generateIv();
Resource resource = new ClassPathResource("file_enc.txt");
File inputFile = resource.getFile();
byte[] salt = …Run Code Online (Sandbox Code Playgroud) jca ×11
java ×6
jce ×3
cryptography ×2
java-ee ×2
adapter ×1
bouncycastle ×1
connector ×1
ejb ×1
encryption ×1
frameworks ×1
glassfish ×1
hikaricp ×1
jakarta-ee ×1
java-ee-8 ×1
javabeans ×1
jboss6.x ×1
jboss7.x ×1
jndi ×1
mysql ×1
open-liberty ×1
openssl ×1
security ×1
weblogic ×1
wildfly ×1