Configure JCA activation specifications
We can configure activation specifications that comply with the Java EE Connector Architecture (JCA) specification.
We can configure one or more instances of activation specifications provided by an installed resource adapter.
Note: Edit server.xml using either the Source view of the Server configuration editor of the WAS Developer Tools for Eclipse, or some other text editor. The steps below assume a resource adapter named MyAdapter has already been configured in the server. Editing the properties sub-elements of the server configuration for connection factories, administrative objects, activation specifications, and resource adapters in the Design view of WebSphere Development Tools (WDT) is not supported.
Steps
- Update server.xml to add the jca-1.6
feature under the featureManager tag.
<featureManager> <feature>jca-1.6</feature> <feature>jndi-1.0</feature> <!-- jndi enables look up of connection factories --> ... </featureManager>
Stabilized feature: The jca-1.6 feature is stabilized. We can continue to use the jca-1.6 feature. However, consider using a later JCA feature.
- Install a resource adapter.
-
<resourceAdapter location="C:/adapters/MyAdapter.rar"/>
- Configure one or more activation specifications.
When configuring activation specifications, supply a properties subelement, even if we do not want to override any configuration properties, to associate the activationSpec element with a message listener type provided by a particular resource adapter. In the following example, the MyAdapter resource adapter provides only one type of message listener:
<activationSpec id="app1/module1/MyMessageDrivenBean"> <properties.MyAdapter messageFilter="ALL"/> </activationSpec>
- If required, identify the available activation specification property subelement
names.
- If a resource adapter provides exactly one message listener interface, excluding any JMS connection factories, the subelement name is: properties.<rar_identifier>
- If the message listener interface name is unique without the package name, the subelement name is:properties.<rar_identifier>.<MessageListenerInterfaceName>
- If the activation specification implementation name is unique without the package name, the subelement name is:properties.<rar_identifier>.<ActivationSpecificationImplementationName>
- If the activation specification implementation name is unique without the package name, the subelement name is:properties.<rar_identifier>.<ActivationSpecificationImplementationName>
- In other cases, the subelement name is:properties.<rar_identifier>.<fully.qualified.MessageListenterInterfaceName>
See the documentation on deploying message-driven beans for information about how to associate the activation specification with a message-driven bean.
Example
The following configures resource adapters with two message listener types with unique interface class names.
In the following snippet from ra.xml, the MyAdapter resource adapter provides two message listener types with unique interface class names:
<messagelistener> <messagelistener-type>javax.resource.cci.MessageListener</messagelistener-type> <activationspec> <activationspec-class>com.vendor.adapter.CCIActivationSpec</activationspec-class> <config-property> <config-property-name>maxSize</config-property-name> <config-property-type>java.lang.Long</config-property-type> </config-property> ... </activationspec> ... </messagelistener> <messagelistener> <messagelistener-type>com.vendor.adapter.MyMessageListener</messagelistener-type> <activationspec> <activationspec-class>com.vendor.adapter.MyActivationSpec</activationspec-class> <config-property> <config-property-name>messageFilter</config-property-name> <config-property-type>java.lang.String</config-property-type> </config-property> ... </activationspec> ... </messagelistener>
The following is an example of a server configuration for this scenario:
<activationSpec id="app1/module1/CCIMessageDrivenBean"> <properties.MyAdapter.MessageListener maxSize="1024"/> </activationSpec> <activationSpec id="app1/module1/MyMessageDrivenBean"> <properties.MyAdapter.MyMessageListener messageFilter="ALL"/> </activationSpec>
The following configures resource adapters with two message listener types with unique implementation class names
In the following snippet from ra.xml, the MyAdapter resource adapter provides two message listener types with unique implementation class names:
<messagelistener> <messagelistener-type>javax.resource.cci.MessageListener</messagelistener-type> <activationspec> <activationspec-class>com.vendor.adapter.CCIActivationSpec</activationspec-class> <config-property> <config-property-name>maxSize</config-property-name> <config-property-type>java.lang.Long</config-property-type> </config-property> ... </activationspec> ... </messagelistener> <messagelistener> <messagelistener-type>com.vendor.adapter.MessageListener</messagelistener-type> <activationspec> <activationspec-class>com.vendor.adapter.MyActivationSpec</activationspec-class> <config-property> <config-property-name>messageFilter</config-property-name> <config-property-type>java.lang.String</config-property-type> </config-property> ... </activationspec> ... </messagelistener>
The following is an example of a server configuration for this scenario:
<activationSpec id="app1/module1/CCIMessageDrivenBean"> <properties.MyAdapter.CCIActivationSpec maxSize="1024"/> </activationSpec> <activationSpec id="app1/module1/MyMessageDrivenBean"> <properties.MyAdapter.MyActivationSpec messageFilter="ALL"/> </activationSpec>
The following configures resource adapters with two message listener types where neither the simple interface nor implementation class names are unique.
In the following snippet from ra.xml, the MyAdapter resource adapter provides two message listener types where neither the simple interface nor the implementation class names are unique:
<messagelistener> <messagelistener-type>javax.resource.cci.MessageListener</messagelistener-type> <activationspec> <activationspec-class>com.vendor.adapter.cci.ActivationSpec</activationspec-class> <config-property> <config-property-name>maxSize</config-property-name> <config-property-type>java.lang.Long</config-property-type> </config-property> ... </activationspec> ... </messagelistener> <messagelistener> <messagelistener-type>com.vendor.adapter.MessageListener</messagelistener-type> <activationspec> <activationspec-class>com.vendor.adapter.ActivationSpec</activationspec-class> <config-property> <config-property-name>messageFilter</config-property-name> <config-property-type>java.lang.String</config-property-type> </config-property> ... </activationspec> ... </messagelistener>
The following is an example of a server configuration for this scenario:
<activationSpec id="app1/module1/CCIMessageDrivenBean"> <properties.MyAdapter.javax.resource.cci.MessageListener maxSize="1024"/> </activationSpec> <activationSpec id="app1/module1/MyMessageDrivenBean"> <properties.MyAdapter.com.vendor.adapter.MessageListener messageFilter="ALL"/> </activationSpec>
It is possible to override the suffixes of configuration element names.
See the information about customizing JCA configuration elements to learn how to override the suffixes of configuration element names.