Configurando e implementando um resourceAdapter básico do JCA

É possível configurar e implementar um ConnectionFactory e um Adaptador de Recursos básicos do Java™ EE Connector Architecture (JCA).

Sobre esta Tarefa

É possível instalar um adaptador de recursos e configurar instâncias dos recursos que ele fornece. Essa tarefa usa um adaptador de recursos de exemplo chamado ExampleRA.rar, que fornece 3 tipos de recursos: um connection factory e dois tipos de objetos administrados.

Procedimento

  1. Habilite o recurso JCA em seu arquivo server.xml .
    O arquivo server.xml está localizado em [path_to_liberty\wlp\usr\servers\server_name]
    <server>
      <featureManager>
        <feature>jca-1.6</feature>
        <feature>servlet-3.0</feature>
      </featureManager>
    </server>
    Recurso Estabilizado: O recurso jca-1.6 está estabilizado. É possível continuar a usar o recurso jca-1.6. No entanto, considere usar um recurso JCA mais recente.
  2. Coloque o arquivo RAR do adaptador de recursos (ExampleRA.rar) na pasta dropins do seu servidor.
    Se o seu servidor estiver em execução, você verá a mensagem a seguir em seu log do console indicando que o adaptador de recursos foi instalado:
    [AUDIT ] J2CA7001I: adaptador de recursos ExampleRA instalado em 1,306 segundos.
  3. Inspecione o descritor de implementação, as anotações e outras documentações do adaptador de recursos para identificar quais tipos de recursos o adaptador fornece e as propriedades de configuração que cada adaptador aceita.
    O adaptador de recursos de exemplo, ExampleRA.rar, tem essas informações no descritor de implementação ra.xml. O arquivo ra.xml é encontrado em [path_to_ExampleRA\ExampleRA\META-INF.] O descritor de implementação identifica 3 tipos de recursos que você pode configurar.
    <connection-definition>
     <managedconnectionfactory-class>com.ibm.example.jca.adapter.ManagedConnectionFactoryImpl</managedconnectionfactory-class>
     <config-property>
      <config-property-name>tableName</config-property-name>
      <config-property-type>java.lang.String</config-property-type>
     </config-property>
     <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
     ...
    </connection-definition>
    
        <adminobject>
          <adminobject-interface>javax.resource.cci.ConnectionSpec</adminobject-interface>
          <adminobject-class>com.ibm.example.jca.adapter.ConnectionSpecImpl</adminobject-class>
          <config-property>
            <config-property-name>readOnly</config-property-name> 
            <config-property-type>java.lang.Boolean</config-property-type>
            <config-property-value>false</config-property-value> 
          </config-property>
        </adminobject>
    
        <adminobject>
          <adminobject-interface>javax.resource.cci.InteractionSpec</adminobject-interface>
          <adminobject-class>com.ibm.example.jca.adapter.InteractionSpecImpl</adminobject-class>
          <config-property>
            <description>Function name. Supported values are: ADD, FIND, REMOVE</description>
            <config-property-name>functionName</config-property-name> 
            <config-property-type>java.lang.String</config-property-type> 
          </config-property>
        </adminobject>
    
  4. No arquivo server.xml , configure instâncias dos tipos de recursos disponíveis.
    <server>
      <featureManager>
        <feature>jca-1.6</feature>
        <feature>servlet-3.0</feature>
      </featureManager>
    
      <connectionFactory jndiName="eis/conFactory">
        <properties.ExampleRA tableName="TABLE1"/>
      </connectionFactory>
    
      <adminObject jndiName="eis/conSpec">
        <properties.ExampleRA.ConnectionSpec/>
      </adminObject>
    
      <adminObject jndiName="eis/iSpec_ADD">
        <properties.ExampleRA.InteractionSpec functionName="ADD"/>
      </adminObject>
    
      <adminObject jndiName="eis/iSpec_FIND">
        <properties.ExampleRA.InteractionSpec functionName="FIND"/>
      </adminObject>
    
    </server>
    
  5. Use a injeção de recurso para acessar os recursos em seu servlet; por exemplo:
        @Resource(lookup = "eis/conFactory")
        private ConnectionFactory conFactory;
    
        @Resource(lookup = "eis/conSpec")
        private ConnectionSpec conSpec;
    
        @Resource(lookup = "eis/iSpec_ADD")
        private InteractionSpec iSpec_ADD;
    
        @Resource(lookup = "eis/iSpec_FIND")
        private InteractionSpec iSpec_FIND;
    
        ...
    
            MappedRecord input = conFactory.getRecordFactory().createMappedRecord("input");
            input.put("city", "Rochester");
            input.put("state", "Minnesota");
            input.put("population", 106769);
    
            Connection con = conFactory.getConnection(conSpec);
            try {
                Interaction interaction = con.createInteraction();
                interaction.execute(iSpec_ADD, input);
                interaction.close();
            } finally {
                con.close();
            }
    Nota: Você deve ativar o recurso JNDI no arquivo server.xml se desejar consultar os recursos do espaço de nomes em vez de usar injeção.