Announcement Announcement Module
Collapse
No announcement yet.
Rollback message, place back on Q if something goes wrong Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • #76
    Just as a final update to this thread, I actually managed to get full 2PC JTA with WebSphere and SI working! The change that made the whole thing work was to swap out the JMS inbound channel adapter for a JMS Message Driven Channel Adapter. If you remember from this thread the final hurdle was that although the JMS message was being rolled back and moved to the dead letter queue it actually wasnt being commited there. The message driven approach doesnt have this problem and from the JavaDoc seems to be the preffered method in high volume systems anyway.

    So........the import bits of config are........

    Code:
    <bean id="defaultTaskExecutor"	class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
    	<property name="workManagerName" value="wm/default" />
    	<property name="resourceRef" value="true" />
    </bean>
    
    <bean id="taskScheduler" class="org.springframework.integration.scheduling.SimpleTaskScheduler">
    	<constructor-arg ref="defaultTaskExecutor" />
    </bean>
    
    <jee:jndi-lookup id="connectionFactory" jndi-name="jms/QueueConnectionFactory" resource-ref="true" />
    
    
    <jee:jndi-lookup id="addressRequestQueue" jndi-name="jms/AddressRequestQueue" resource-ref="true" />
    		
    <bean id="addressRequestJmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    	<property name="connectionFactory" ref="connectionFactory" />
    	<property name="destination" ref="addressRequestQueue" />
    	<property name="transactionManager" ref="transactionManager" />
    		
    	<property name="concurrentConsumers" value="2" />
    	<property name="maxConcurrentConsumers" value="2" />
    	<property name="taskExecutor" ref="defaultTaskExecutor" />
    </bean>
    	
    <si-jms:message-driven-channel-adapter id="jmsAddressRequest" container="addressRequestJmsContainer" channel="addressRequestInChannel" />
    
    
    <jee:jndi-lookup id="userTransaction" jndi-name="jta/usertransaction" />
    
    
    <bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager">
    	<property name="userTransaction" ref="userTransaction" />
    </bean>
    Hope that helps someone. SI is brilliant and extremely productive. I reckon I've spent 10% of my project defining the message flows etc, 10% tweaking and fine tuning for maximum concurrency and 80% getting the damn thing to work with WebSphere

    Comment


    • #77
      Yeah rhart and I have been working togethere on this and I do appreciate his efforts greatly. I have also managed to get this working and it seems to be behaving and doing all the JTA stuff quite well. I agree, the WAS cfg was the worst nightmare, SI is extremely productive. We plan on going live in August 09.

      Comment

      Working...
      X