标签: jca

Weblogic找不到具有“正确” JNDI名称的资源适配器进行绑定

我试图将消息驱动的Bean与Weblogic 10.3.5上的Oracle JCA文件适配器(包含在SOA套件中)绑定。这样,当任何.txt文件移动到特定目录时,我的MDB都可以得到通知。

启动支持SOA功能的Weblogic域后,将自动部署文件适配器。在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)

ejb weblogic jndi adapter jca

5
推荐指数
1
解决办法
5199
查看次数

运行connectorz Executor框架时出现异常

我正在尝试运行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或任何资源文件相关的任何配置?
我该如何解决这个问题?

java frameworks connector jca jboss6.x

5
推荐指数
1
解决办法
357
查看次数

Java Cryptography Extension的密钥长度限制

我知道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)

java cryptography bouncycastle jce jca

5
推荐指数
1
解决办法
1万
查看次数

使用自定义 JCE 安全提供程序而不进行签名

我们有自定义的 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 天才能得到回复,我们需要这个来进行测试。

java security jce jca

5
推荐指数
1
解决办法
1427
查看次数

自由激活@MessageDriven

我想在 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)

jca websphere-liberty open-liberty java-ee-8 jakarta-ee

5
推荐指数
1
解决办法
259
查看次数

将Java EE应用程序连接到外部系统

我们有一个在Glassfish 3.1上运行的Java EE应用程序,它需要接受来自用Java编写的遗留系统的通知.此遗留系统提供了一个JAR文件,应该由希望订阅系统通知的任何外部应用程序使用.

在Java SE应用程序中使用时,库的工作方式如下:

  1. 使用旧系统的连接参数初始化库
  2. 该库连接到系统并侦听通知
  3. 我们的应用程序通过实现接口来注册通知
  4. 每当收到通知时,都会调用实现类中的方法

我们希望在Java EE中重现相同的方式,即只要系统发送通知就调用EJB方法.

JCA是走的路吗?单例EJB如何初始化库并将自己注册为侦听器?

关于这个主题的好例子很难找到,所以如果你有任何指导,我将不胜感激.

glassfish jca java-ee

4
推荐指数
1
解决办法
344
查看次数

数据库重启后Jboss无法重新连接Mysql

您好,我们使用 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),但是没有发生。请指教

mysql jca jboss7.x

3
推荐指数
1
解决办法
1555
查看次数

如何在Java EE兼容服务器中使用JCA中的MessageEndPoint?

我是Java Connector Architecture(JCA)和Java Enterprise Edition(Java EE)的新手.我一直在阅读JCA 1.6规范,但我不是100%得到所有东西.

所以这里有一些问题:

  • MessageEndPoint是指企业信息系统(EIS)吗?或者它是服务器上的应用程序试图使用从EIS获得的消息?
  • MessageEndPoint需要是一个bean吗?
  • 激活MessageEndPoint是什么意思?

你能展示一些关于工作/部署MessageEndPoint的简单例子吗?我正在WebSphere Application Server上测试它 - Liberty配置文件

javabeans jca java-ee websphere-liberty

3
推荐指数
1
解决办法
337
查看次数

使用 javax.crypto.Cipher 与 java.security.Signature 进行签名

我正在编写一些旧代码,需要更新它才能使用另一个加密提供商。我不是 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)

如果我为两者使用相同的提供商,两者之间有什么区别吗?一种方式通常优于另一种方式吗?

java cryptography jce digital-signature jca

2
推荐指数
1
解决办法
1725
查看次数

HikariCP 是 JCA 投诉连接池吗?

我最近尝试使用 Wildfly 配置 HikariCP,我想知道,有了 JCA,我是否能够进行标准 JCA 特定配置来适应 HikariCP 连接池?

java connection-pooling jca wildfly hikaricp

1
推荐指数
1
解决办法
990
查看次数

解密java中使用openssl加密的文件

使用以下命令对文件进行加密:

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)

java encryption openssl jca

-1
推荐指数
1
解决办法
859
查看次数