When a JBoss EAP server is configured with a resource adapter deployed using `generic-jms-ra.rar`, the connection factory is deregistered when the server is reloaded. The cause of the issue is that the generic resource adapter does not correctly handle the reload if the transaction subsystem is configured to run on the JBoss Transactions System (JTS). The root cause of this issue is being investigated.
A workaround is to add a JCA descriptor XML file to the RAR archive with the connection properties specified.
DescriptionVladimir Rastseluev
2013-08-02 10:19:55 UTC
Created attachment 781921[details]
module
Description of problem:
Start server with configured resource adapter and deployed generic-jms-ra.rar. After server started we can see registered and bound connection factory.
Then we add some changes to the server to set up jts transactions mode by CLI utility. Reload the server. Connection factory isn't registered.
Version-Release number of selected component (if applicable):
EAP 6.1.1.ER4
generic resource adapter: https://github.com/jbertram/generic-jms-ra
How reproducible:
easy
Steps to Reproduce:
1. add applied generic-jms-ra.rar file to the $JBOSS_HOME/standalone/deployments directory
2. unpack applied module and add it to $JBOSS_HOME/modules directory
3. update module.xml file from org.jboss.as.ee module, adding a new dependency:
"<module name="com.tibco.tibjms"/>"
4. update $JBOSS_HOME/standalone/configuration/standalone.xml, adding global modules to <subsystem xmlns="urn:jboss:domain:ee:1.1">:
<global-modules>
<module name="com.tibco.tibjms" slot="main"/>
<module name="org.jboss.common-core" slot="main"/>
</global-modules>
5.configure resource-adapters subsystem this way:
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
<resource-adapters>
<resource-adapter id="generic-jms-ra.rar">
<archive>
generic-jms-ra.rar
</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<connection-definition class-name="org.jboss.resource.adapter.jms.JmsManagedConnectionFactory" jndi-name="java:/jms/QueueConnectionFactory" pool-name="CF" use-java-context="false">
<config-property name="JndiParameters">
java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory;java.naming.provider.url=tcp://tibco01.mw.lab.eng.bos.redhat.com:7222
</config-property>
<config-property name="ConnectionFactory">
XAQCF
</config-property>
<security>
<application/>
</security>
<recovery>
<recover-credential>
<user-name>tibco</user-name>
<password>tibco</password>
</recover-credential>
</recovery>
</connection-definition>
</connection-definitions>
</resource-adapter>
</resource-adapters>
</subsystem>
6. run server $JBOSS_HOME/bin/standalone.sh
see - java:/jms/QueueConnectionFactory is registered
7. run $JBOSS_HOME/bin/cli.sh
8. execute commands in cli:
-->/subsystem=jacorb/:write-attribute(name=transactions,value=on)
-->/subsystem=transactions/:write-attribute(name=recovery-listener,value=true)
-->/subsystem=transactions/:write-attribute(name=jts,value=true)
-->:reload
Actual results:
connection factory java:/jms/QueueConnectionFactory isn't registered
Expected results:
connection factory java:/jms/QueueConnectionFactory isn't registered
Comment 1Vladimir Rastseluev
2013-08-02 10:21:56 UTC
Comment 4JBoss JIRA Server
2013-09-06 05:26:57 UTC
Ivo Studensky <istudens> made a comment on jira WFLY-1968
This does not seem to be an issue in WildFly. It only affects EAP.
I don't know, however, which commit fixes it.
Comment 5Russell Dickenson
2013-12-02 01:18:16 UTC
I have written a release notes entry for this ticket. In comment 2, Vladimir suggests a workaround is available, which was not mentioned in the draft release notes text. If there is a workaround available, please provide specifics in this ticket.
Hi Russel,
I changed the word restarted to reloaded in the doc text as the problem occurs for reloading server not restarting.
The workaround is to add the iron jacamar descriptor ironjacamar.xml to the RAR archive with the connection properties specified. The issue https://bugzilla.redhat.com/show_bug.cgi?id=991380 contains attachment jms-generic-rar.rar (https://bugzilla.redhat.com/attachment.cgi?id=781903) where such descriptor was added (manually by Vladimir) and with such additional configuration the reload should work.
Ondra