使用Liberty Buildpack包含ResourceAdapter(rar)的最佳方法是什么?

时间:2016-01-19 21:00:34

标签: cloudfoundry websphere-liberty buildpack

我们遇到Liberty应用程序通过JNDI查找访问自定义资源适配器的情况,该查询连接到server.xml中定义的连接工厂。 server.xml中的connectionFactory,resourceAdapter和enterpriseApplication节点的组合似乎使得无法将rar捆绑到耳朵内并将耳朵作为单个实体推送而没有重大的应用程序重构,这是一个非首发。

我现在看到两种方法可以解决这个问题:

  1. 将rar / ear组合推送为捆绑服务器软件包,或
  2. 修改Liberty buildpack以在推送时拉入rar,在server.xml中生成预期的节点
  3. 我错过了第三种选择吗?

    谢谢,汤姆

1 个答案:

答案 0 :(得分:1)

第三个选项是在您的应用中嵌入RAR,但我不明白您对为什么需要广泛的应用重构的评论。理论上,应用程序不应该改变,只是配置... 有关配置连接工厂以与嵌入式资源适配器一起使用的详细信息,请参阅IBM Knowledge Center主题http://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ae/twlp_jca_config_resadapters.html?lang=en。 对于独立资源适配器,我假设您在server.xml中有这样的东西:

<connectionFactory jndiName="eis/NAME" type="javax.resource.cci.ConnectionFactory">
    <properties.rarName dataStoreName="name" hostName="otherName"/>
</connectionFactory>
<resourceAdapter id="rarName" location="rarName.rar"/>

当你将rar嵌入到耳朵中时,正如你所指出的那样,resourceAdapter节点消失了,你会使用类似这样的东西:

<application location="C:/applications/app1.ear"/>
<connectionFactory jndiName="eis/NAME” type='javax.resource.cci.ConnectionFactory’>
    <properties.app1.rarName dataStoreName="name" hostName="otherName"/>
</connectionFactory>

请注意,对于嵌入式资源适配器,properties元素现在还必须在元素名称中包含应用程序名称(在本例中为“app1”)。 如知识中心主题所示,如果要覆盖资源适配器的默认名称,则可以执行以下操作:

<application location="C:/applications/app1.ear”>
    <resourceAdapter id=“rarName" alias="MyEmbeddedRA"/>
</application>
<connectionFactory jndiName="eis/NAME" type="javax.resource.cci.ConnectionFactory">
    <properties.app1.MyEmbeddedRA dataStoreName="name" hostName="otherName"/>
</connectionFactory>