Problem with WSTXInitialisation listener
kardinal Aug 8, 2007 2:10 AMHello!
We are currently evaluating JBoss WS Transaction implementation and run into a small problem that I will try to explain below. In our sample application we are trying to run the client, web services participating in a transaction and the coordinator on different physical machines under Tomcat/Axis environment. The problem is on the client side, in the initialization of the JBossTS environment, when I try to specify the URL for the coordinator in the standard wstx.xml configuration file:
<wstx-config> <properties> .... <!-- Initialization of coordinator URLs --> <property name="com.arjuna.mw.wst.coordinatorURL" value="http://SOME_HOST:8080/xts/soap/ActivationCoordinator"> </property> <property name="com.arjuna.mw.wst.ba.terminatorURL" value="http://SOME_HOST:8080/xts/soap/BusinessActivityTerminatorParticipant"> </property> <property name="com.arjuna.mw.wst.at.terminatorURL" value="http://SOME_HOST:8080/xts/soap/TerminatorParticipant"> </property> </properties> </wstx-config>
The corresponding listener is specified in the web.xml of the client web application:
... <!-- WSTX --> <listener> <listener-class>com.arjuna.mw.wst.deploy.WSTXInitialisation</listener-class> </listener> ....
The problem is that the client is not able to find the coordinator even though the com.arjuna.mw.wst.coordinatorURL property is defined in wstx.xml. After a little debugging I was able to find the cause of this problem: in the contextInitialized(..) method of the WSTXInitialisation class
wstx.xml is parsed and corresponding initialization performed after initializing UserTransaction (in case of AT). So if I change the contextInitialized(..) method to the following
public void contextInitialized(final ServletContextEvent servletContextEvent) { try { Configuration.initialise("/wstx.xml"); configure(); // Start recovery // RecoveryManager.manager() ; } catch (Exception exception) { wstxLogger.arjLoggerI18N.error("com.arjuna.mw.wst.deploy.WSTXI_1", exception); } catch (Error error) { wstxLogger.arjLoggerI18N.error("com.arjuna.mw.wst.deploy.WSTXI_21", error); } }
it works perfectly for me. Note that I have switched the places of the first two lines of code. I would appreciate any help on this topic.
With best regards,
Karen