我想配置一个自编写的JCA 1.6入站资源适配器(RA)。我的一个大问题是RA需要访问生活在使用RA的应用程序中的一些(动态)配置数据。 现在我知道这违背了整个JCA理念的原始想法,但遗憾的是我无法像我希望的那样尽快改变这种设计。 我需要获得RA的数据是
我提出了四个想法:
使用管理对象为我的应用程序提供将数据传递到RA的方法。提到了这个想法here。我想这样做了,但规范在第13.4.2.3章中指出
注意,管理对象不用于设置异步消息 传递到消息端点。 ActivationSpec JavaBean用于保存所有 异步消息传递所需的必要激活信息 设置。
但我无法获取ActivationSpec对象的任何动态数据(既不通过DeploymentDescriptor也不通过注释)。或者我在这里错过了什么? : - )
直接使用JDBC访问数据(也从here获取了想法)。虽然这可能是最好的想法,但它不适用于所提到的许可数据,因为它没有存储在数据库中。
我的最后一个想法是在MessageDrivenBean(通过我的界面)中放置一个方法,用于从RA中获取数据。可以从RA调用该方法并提供数据。但是:我认为将RA与应用程序结合起来非常侮辱。
谢谢,欢呼, 朱利
答案 0 :(得分:0)
在ra.xml中可以定义config-properties。在Websphere中,这些字段在所选资源适配器的自定义属性表中显示为可编辑字段。我正在处理类似的问题,我还需要将主机名/端口信息传递给RA。不幸的是,我还没想出如何从RA中读取这些字段的内容。
答案 1 :(得分:0)
我最终提出的解决方案是使用@ConfigProperty
注释。这意味着我使用上述选项之一。
所以我的ResourceAdapter
课程如下:
public class Hl7ResourceAdapter implements ResourceAdapter {
@ConfigProperty
private Integer port = null;
// Rest from ResourceAdapter interface omitted here...
// Use port here to open socket...
}
现在可以通过
设置@ConfigProperty
字段
现在为了重新配置这些设置,我使用glassfish的REST interface以编程方式更改这些设置(也可以使用asadmin create-resource-adapter-config
命令)。我解决了这个问题,即glassfish不会通过REST自行重启它来重新启动使用资源适配器的应用程序。 (确切地说:我禁用了应用程序,然后重新启用它以在glassfish中绕过another bug)
一些补充说明:
希望这会有所帮助。 kutuzof,这会让你更进一步吗?