问题标签 [jca]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jakarta-ee - JBoss下Java EE应用程序中的Mqtt Client
我开发了一个测试 Java EE 应用程序来通过 MQTT 协议(tcp 连接)发送和接收消息。在 JBoss 7.1 下,我得到了一个 @Singleton @Startup,它实例化了一个 Eclipse Paho 客户端和一个回调类。
我想将接收到的值更新到另一个 bean。但是在我的回调类中,我不能注入任何 EJB(它会中断 tcp 连接),所以我以这种方式获取 PahoClient 实例,如上所示:
因此,当我在回调方法上收到一条消息时,我会以这种方式更新值 public class SubscribeCallback 实现 MqttCallback{
它似乎工作正常。但在控制台中,我看到 MQTT 线程更新消息,而不是 EJB。而且我不知道如果有很多联系,这是否可行。有什么建议吗?
我正在考虑为我的 MQTT 客户端和我的 Java EE 应用程序开发一个 JCA 适配器,但我不知道这是否是正确的方法。
java - 如何实现 KeyStoreSpi.store(KeyStore.LoadStoreParameter param)?
我正在实现一个 Java 密钥库,我可以覆盖的方法之一是KeyStoreSpi.engineStore(KeyStore.LoadStoreParameter param)
,它应该根据提供的参数存储密钥库。
我不明白如何实现此方法,原因有两个:
显然
param
可以为空。在这种情况下,我的班级如何知道将数据存储在哪里?假设
param
不为空 - 它仍然不提供任何输出位置信息。该LoadStoreParameter
参数是对 的松散包装ProtectionParameter
,它似乎只提供对密码信息的访问。同样,没有关于存储此密钥库的位置。
关于如何解决这个问题的任何建议?我倾向于不覆盖此方法并依赖默认实现,它会抛出UnsupportedOperationException
. 但这只是在回避问题。
我已经尝试在谷歌上搜索“ extend KeyStoreSpi ”以获取密钥存储源文件的示例,但似乎没有人实现此方法。我想这可能是有原因的...
soa - Oracle SOA 套件:adapters_config.xml 中的每个适配器实例一个条目?
我计划找一位 Oracle SOA 套件实施专家 (1z0-478) 在练习示例问题时,我遇到了一个让我感到困惑的问题:
*每个 JCA 适配器都有一个在 WLS 控制台中列出的部署。确定关于在运行时中管理每个适配器的多个实例的两个准确描述。
A. SOA Suite 部署计划中的实例配置
B. 每个适配器实例的 JCA 瓦片
C. WLS 控制台中指定的适配器连接工厂
D. adapters_config.xml 文件中每个适配器实例一个条目*D
答案是:A、D
但是我找不到任何名为 adapters_config.xml 的文件?而且我不知道这里的入口是什么?
java - 给定一个 KeyPair,如何验证此 KeyPair 中包含的密钥是否为预期长度?
我正在编写一些 Junit 测试,其中生成了许多 java.security.KeyPair 类型的对象(来自 java.security.KeyPairGenerator)
我正在添加一些断言以确认这些 KeyPair 中包含的密钥具有预期的属性(预期的算法和预期的大小)。
例如,我添加了一个断言语句来确认该算法是预期的算法,使用:
我试图在 KeyPair 或 Keys 本身中找到一些返回密钥大小(位数)的方法,但我找不到这样的方法。
我检查了键的 toString() 方法的输出,以查看该字符串是否包含键的大小,使用:
我发现对于 SunRsaSign 提供程序,该字符串包含其第一行中的位数(因此可以通过解析此字符串来确认密钥大小。但是当我检查 Bouncy Castle 的相同方法时,我发现字符串不包含位数,如下图:
来自 RsaSunSign 提供程序的密钥上的 toString() 输出:
来自 Bouncy Castle Provider 的键上的 toString() 输出:
因此,使用密钥的字符串表示形式的输出来确认其大小显然是不安全的,因为我们不知道将使用哪个提供程序。
所以我的问题是:给定一个 KeyPair(并且还给出了用于生成该 KeyPair 的 KeyPairGenerator),是否有提供者中立的方法来确认 KeyPair 中密钥的大小?
java - GlassFish 随机选择错误的 JCA ConnectionFactory 进行注入
我正在为 FTP 和 SFTP 编写 JCA 资源适配器。由于我的目标是能够使用一种完全独立于另一种协议的协议,因此我有两个不同的 ManagedConnectionFactory 类,每个协议一个。两者都有不同的 ConnectionDefinition 注释;Glassfish domain.xml 包含 FTP 适配器的资源定义,但不包含 SFTP 适配器的资源定义。现在,当我将 注入FTPConnectionFactory
EJB 时,有时会收到 InjectionException,因为 WELD 会尝试注入SFTPConnectionFactory
(这在应用服务器运行期间当然是一致的;我始终得到正确的或错误的)。删除 SFTP 适配器的 ConnectionDefinition 注释似乎可以解决问题。
所以,问题:
- 我该如何解决这个问题并让 Glassfish 注入正确的类?这可能是由我的代码中的问题引起的,还是 Glassfish 问题?
- 根据规范,RA 具有多个 ConnectionDefinition 注释以及实现 ManagedConnectionFactory 的类的多个实例是合法的;但我找不到任何有关在同一个资源适配器内实现多个不同类的信息。Glassfish 显然似乎有问题 - 这是在某处明确允许还是不允许?
ConnectionDefinition(在 SFTP 案例中 FTP 被 SFTP 取代):
FTP 和 SFTP Factory 和 ManagedConnection 类共享共同的祖先,但不直接相关 - 但这似乎并不重要,因为完全分离实现没有区别。
domain.xml
片段:
和注入的领域:
jaas - 通过 Java API 检索 Websphere Liberty Profile 和 J2C AuthData
在完整版的 Websphere 中,您可以定义 JAAS 身份验证条目。这些条目具有唯一的 ID、用户名和密码。通常这些绑定到 WAS 中的其他配置条目,例如 DataSource 配置。
但有时您需要通过 API 直接从应用程序代码访问 J2C 记录。这里有几篇文章解释了如何在 WAS 中进行操作。通常你要做的是:
它确实通过 JCA API 在 WAS 中工作,但在 Websphere Liberty Profile 中却不行。有什么方法可以访问 Websphere Liberty Profile 中的 J2C AuthData?为此目的在 server.xml 中设置 J2C 所需的最低配置是什么?
我们有类似的东西:
但显然这还不够,因为 WLP 会抛出:javax.security.auth.login.LoginException:如果您尝试执行 loginContext.login(),则没有为 DefaultPrincipalMapping 配置 LoginModules。
netty - Netty 4 和 JCA WorkManager 集成
已经问过有关将 Netty 3 与 JCA 资源适配器集成的问题。解决方案非常简单:编写一个包装 JCA WorkManager 的自定义 Executor 并将其传递给 NioServerSocketChannelFactory 构造函数。
但是,在 Netty 4 中似乎对线程进行了大量重构,并且这种方法不起作用(开始时没有 NioServerSocketChannelFactory 类)。可以选择提供您自己的 ThreadFactory,但显然,这对 JCA 来说还不够好,因为只暴露了 WorkManager,而不是线程,因此不再可能使用简单的外观。
所以我想我被困住了。在没有编写大量代码的情况下,我正在尝试做的事情是否可行?
编辑:最后我问自己为什么要制作资源适配器。相反,我只是使用 JMS 队列(入站和出站)作为我的 EE 应用程序和使用 netty 的独立服务器之间的集成点,它工作正常。
java - 使用哪个 Sun 提供商来生成用于加密(加密)数据的 RSA 密钥对
我试图找出应该使用哪个 Sun 加密提供程序来生成 RSA 密钥对,该密钥对将用于加密Java 中的数据。我知道还有其他提供商,例如 Bouncy Castle,但我想使用其中一个 Sun 提供商。(算法:RSA,密钥大小 2048)
例如,在我的机器上,我目前有以下提供程序可用:
- 太阳 1.7
- SunRsaSign 1.7
- SunEC 1.7
- SunJSSE 1.7
- SunJCE 1.7
- SunJGSS 1.7
- SunSASL 1.7
- XMLDSig 1.0
- 太阳PCSC 1.7
我以前使用提供者 SunRsaSign 来生成用于签名数据的 RSA 密钥对。但我不确定它是否安全,或者使用 SunRsaSign 生成的密钥对加密数据是否有意义。
我注意到提供者 SunJSSE 包含: sun.security.rsa.RSAKeyPairGenerator
我的主要问题是:应该使用哪个 Sun 提供程序来生成将用于加密 (而不是签名)的 RSA 密钥对?
此外,SunRsaSign 生成的密钥对是否应该仅用于签署数据?因为这个提供者的名字中包含“Sign”这个词,所以我认为它是专门用于签名的,但现在我不太确定了。
最后,使用 SunJSSE 生成的密钥对进行一般加密是否安全且有意义?如果是这样,SunJSSE 生成的 RSA 和 SunJSSE 生成的 RSA 密钥对有什么区别?
ibm-mq - 部署在 JBOSS 上的 MDB 从 IBM MQ 获取消息
我想在 JBOSS 上部署 MDB。但是发布者不会向 JBOSS AS 发送消息,它正在向 IBM MQ 发送消息。
我应该使用 JCA 来集成 JBOSS 和 IBM MQ 吗?
或者
JBOSS AS 上的 MDB 能否订阅 IBM MQ 从发布者获取消息的主题?
一种方法对另一种方法的优势是什么?
java - 是否可以从 Oracle JCA 适配器阀更改 java 代码中的文件名?
我已经使用 SOA Suite 11g 文件适配器实现了一个管道阀。有java代码,像这样
它用于写操作。是否可以更改阀门内inputStreamContext或PipelineContext中的目录和文件名?
InputStreamContext类中有getMessageOriginReference方法,它返回一个包含目录和文件名的字符串。还有setMessageOriginReference方法,它对我不起作用。