使用 Java EE 连接器体系结构连接器访问数据

要从 WebSphere® Application Server中符合 Java™ EE 连接器体系结构 (JCA) 的应用程序访问数据,请配置并使用资源适配器和连接工厂。

有关此任务

应用程序组件使用连接工厂来访问连接实例,然后组件使用此实例连接到下层的企业信息系统 (EIS)。 连接示例包括数据库连接, Java 消息服务连接和 SAP R/3 连接。

如 Java EE 连接器体系结构 (JCA) 规范中所指示,每个企业信息系统 (EIS) 都需要一个资源适配器和一个连接工厂。 然后,可以通过以下编程模型来访问此连接工厂。 如果您使用 Rational ® Application Development 工具,那么将为您生成以下大部分部署描述符和代码。 此示例显示访问 EIS 资源的手动方法。

过程

  1. 在应用程序组件部署描述符中声明连接工厂资源引用,如此例中的描述:
    <resource-ref>
       <description>description</description>
       <res-ref-name>eis/myConnection</res-ref-name>
       <res-type>javax.resource.cci.ConnectionFactory</res-type>
       <res-auth>Application</res-auth>
    </resource-ref>
    
  2. 在部署过程中,通过控制台来配置每个资源适配器以及相关联的连接工厂。
    有关更多信息,请参阅有关安装资源适配器和配置连接工厂的主题。
  3. 在运行时期间,在应用程序组件中使用 Java 命名和目录接口 (JNDI) 查找来找到 EIS 资源适配器的相应连接工厂。
  4. 从连接工厂获取到 EIS 的连接。
  5. 从连接对象创建交互。
  6. 创建 InteractionSpec 对象。 在 InteractionSpec 对象中设置要执行的函数。
  7. 为函数使用的输入和输出数据创建一个记录实例。
  8. 通过 Interaction 对象执行该函数。
  9. 处理来自该函数的记录数据。
  10. 关闭连接。

示例

下列代码段显示了应用程序组件可能会如何创建交互并在 EIS 上实现:

javax.resource.cci.ConnectionFactory connectionFactory = null;
javax.resource.cci.Connection connection = null;
javax.resource.cci.Interaction interaction = null;
javax.resource.cci.InteractionSpec interactionSpec = null;
javax.resource.cci.Record inRec = null;
javax.resource.cci.Record outRec = null;

try {
// Locate the application component and perform a JNDI lookup
   javax.naming.InitialContext ctx = new javax.naming.InitialContext();
   connectionFactory = (javax.resource.cci.ConnectionFactory)
ctx.lookup("java:comp/env/eis/myConnection");

// create a connection
   connection = connectionFactory.getConnection();

// Create Interaction and an InteractionSpec
   interaction = connection.createInteraction();
   interactionSpec = new InteractionSpec();
   interactionSpec.setFunctionName("GET");

// Create input record
   inRec = new javax.resource.cci.Record();

// Execute an interaction
   interaction.execute(interactionSpec, inRec, outRec);

// Process the output...

} catch (Exception e) {
   // Exception Handling
}
finally {
    if (interaction != null) {
         try {
              interaction.close();
         }
         catch (Exception e) {/* ignore the exception*/}
   }
   if (connection != null) {
        try {
             connection.close();
        }
        catch (Exception e) {/* ignore the exception */}
   }
}