配置资源适配器
您可以配置符合 Java™ EE 连接器体系结构 (JCA) 规范 V1.6、V1.5 或 V1.0 的资源适配器。
关于此任务
您可以安装和配置资源适配器和各种连接工厂、受管对象以及 JCA 规范中定义的激活规范。
过程
示例
需要资源适配器的唯一标识,以将所配置的连接工厂、受管对象和激活规范的实例标识为与已安装的资源适配器相关联。对于独立资源适配器,将模块名称用作标识。对于嵌入在应用程序中的资源适配器,将应用程序名称与模块名称的组合用作标识(应用程序名称与模块名称之间用句点字符定界)。
要使用包含资源适配器标识 MyAdapter 的 properties.MyAdapter 子元素指定独立资源适配器的属性:
<resourceAdapter location="C:/adapters/MyAdapter.rar"> <properties.MyAdapter logFile="${server.output.dir}/logs/myAdapter.log"/> </resourceAdapter>
要使用一个包括资源适配器标识 MyAdapter 的 properties.MyAdapter 子元素使连接工厂与独立资源适配器相关联:
<resourceAdapter location="C:/adapters/MyAdapter.rar"/> <connectionFactory jndiName="eis/cf"> <properties.MyAdapter serverName="localhost" portNumber="1234"/> </connectionFactory>
要使连接工厂与资源适配器 MyEmbeddedAdapter(在 app1 应用程序中已启用)相关联,请使用 properties.app1.MyEmbeddedAdapter 子元素:
<application location="C:/applications/app1.ear"/> <connectionFactory jndiName="eis/cf"> <properties.app1.MyEmbeddedAdapter serverName="localhost" portNumber="1234"/> </connectionFactory>
在某些情况下,模块名称不足以唯一地充当标识。例如,如果您安装了同一资源适配器的两个不同版本,可能就会发生这种情况。此外,模块名称可能是唯一的,但是将它用于配置不可取,因为它太长或者包含非字母数字字符。您可以通过指定 id 属性来覆盖资源适配器标识。
以下示例说明如何覆盖独立资源适配器的标识:
<resourceAdapter id="MyAdapterV1" location="C:/adapters/version-1.0/MyAdapter.rar"/> <resourceAdapter id="MyAdapterV2" location="C:/adapters/version-2.0/MyAdapter.rar"/> <connectionFactory jndiName="eis/cf1"> <properties.MyAdapterV1 serverName="localhost" portNumber="1234"/> </connectionFactory> <connectionFactory jndiName="eis/cf2"> <properties.MyAdapterV2 serverName="localhost" portNumber="1234"/> </connectionFactory>
以下示例说明如何覆盖嵌入在应用程序中的资源适配器的标识。该示例将标识更改为 MyEmbeddedRA:
<application location="C:/applications/app1.ear"> <resourceAdapter id="MyEmbeddedAdapter" alias="MyEmbeddedRA"/> </application><connectionFactory jndiName="eis/cf"> <properties.app1.MyEmbeddedRA serverName="localhost" portNumber="1234"/> </connectionFactory>
要计算嵌入的资源适配器的模块名称,资源适配器部署描述符 (ra.xml) 中的 <module-name> 条目优先作为模块名称。例如,在 ra.xml 中提供以下定义:
<connector ...> <module-name>MyRARModule</module-name> </connector>
模块名称将设置为“MyRARModule”。
如果连接器部署描述符中缺少模块名称,那么将使用引用应用程序部署描述符 (application.xml) 中的资源适配器模块的 URI 的短格式。例如,在 application.xml 中提供以下模块定义:
<module> <connector>connectors/MyRARModule.rar</connector> </module>
模块名称将计算为“MyRARModule”。
如果多个资源适配器嵌入在应用程序中,并且定义相同 <module-name> 值,那么 application.xml 中所列示的第一个资源适配器将使用该模块名称。根据完整格式的 URI(所有正斜杠 / 字符转换为句点 .)计算具有此相同冲突名称的另一个连接器的模块名称。. 例如,如果两个连接器都嵌入在应用程序,并且它们在 ra.xml 中都包含以下定义:
<connector ...> <module-name>MyRARModule</module-name> </connector>
并且下列定义存在于 application.xml 中:
<module> <connector>subfolder1/connector1.rar</connector> </module> <module> <connector>subfolder2/connector2.rar</connector> </module>
第一个连接器的模块名称将为“MyRARModule”,第二个连接器的模块名称将为“subfolder2.connector2.rar”