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
ExampleRA.rar, que fornece 3 tipos de recursos:
um connection factory e dois tipos de objetos administrados.Procedimento
- 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 recursojca-1.6está estabilizado. É possível continuar a usar o recursojca-1.6. No entanto, considere usar um recurso JCA mais recente. - 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.
- 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> - 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> - 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.