On Mon, Nov 2, 2009 at 12:02 PM, Schneider Christian <[email protected]> wrote: > Hi, > > I am currently trying to get transactions for SOAP/JMS running. I am using > camel-cxf for SOAP handling and camel-jms for jms connections. > > I have a request reply service that should be able to do three different > things: > > - no exception occurs in the implementation: The jms Message should be > committed and the normal reply should be sent > - The implementation throws an exception defined in the service contract: > The jms message should be committed and a fault should be sent > - The implemementation throws another kind of exception: The message should > be rolled back so it can be received again > > In my service impl I tried throwing a RuntimeException or Error. In both > cases my jms message was committed and a fault was sent back to the client. > > I have attached my spring config. Is there anything I have to add to control > how exceptions influence the transaction? > > I also have another question. When my transaction is rolled back, how can I > avoid running into an endless loop where the server always consumes the > message and then rolls it back because of the exception? >
You need to configure the redelivery policy of your JMS broker for that For example with AMQ its: http://activemq.apache.org/redelivery-policy.html But for Tibco you gotta resort to their documentation how to do that. > Greetings > > Christian > > > Christian Schneider > Team Handel und Risikomanagement > Informationsverarbeitung Business Solutions Trading > EnBW Systeme Infrastruktur Support GmbH > > Informationsverarbeitung > Business Solutions > Handel und Dispatching > Durlacher Allee 93 > 76131 Karlsruhe > > Tel : +49-(0)721-63-15482 > Mail: [email protected] > > Sitz der Gesellschaft: Karlsruhe > Handelsregister: Amtsgericht Mannheim HRB 108550 > Vorsitzender des Aufsichtsrats: Dr. Bernhard Beck > Geschäftsführer: Jochen Adenau, Dr. Peter Krampf > > > ------ > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:context="http://www.springframework.org/schema/context" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd > http://cxf.apache.org/core > http://cxf.apache.org/schemas/core.xsd > http://cxf.apache.org/jaxws > http://cxf.apache.org/schemas/jaxws.xsd > http://www.springframework.org/schema/context > http://www.springframework.org/schema/context/spring-context-2.5.xsd > http://camel.apache.org/schema/spring > http://camel.apache.org/schema/spring/camel-spring.xsd > http://cxf.apache.org/transports/camel > http://cxf.apache.org/transports/camel.xsd" >> > <context:annotation-config/> > > <import resource="classpath:META-INF/cxf/cxf.xml" /> > <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> > <import resource="classpath:META-INF/cxf/cxf-extension-camel.xml" /> > > <bean id="configProps" > > class="org.springframework.beans.factory.config.PropertyPlaceholderConfigure > r"> > <property name="locations"> > <list> > <value>classpath:jms.properties</value> > </list> > </property> > </bean> > > <bean id="appModule" class="net.enbw.endur.AppModule"> > <property name="customerService" ref="customerService"/> > </bean> > > <bean id="serviceImpl" class="net.enbw.endur.ServiceImpl"> > </bean> > > <!-- SOA configs below --> > > <endpoint id="customerServiceEndpoint" > xmlns="http://cxf.apache.org/jaxws" > xmlns:service="http://examples.etg.services.enbw.net/" > serviceName="service:CustomerService" > endpointName="service:CustomerServiceEndpoint" > > address="camel://jms:queue.net.enbw.services.etg.examples.customerservice.Cu > stomerService" > implementor="#serviceImpl"> > <features> > <!-- Enables logging of SOAP messages. --> > <logging xmlns="http://cxf.apache.org/core" /> > </features> > </endpoint> > > <client id="customerService" xmlns="http://cxf.apache.org/jaxws" > xmlns:service="http://examples.etg.services.enbw.net/" > serviceName="service:CustomerService" > endpointName="service:CustomerServiceEndpoint" > > serviceClass="net.enbw.services.etg.examples.customerservice.CustomerService > V1" > > address="camel://jms:queue.net.enbw.services.etg.examples.customerservice.Cu > stomerService"> > <features> > <!-- Enables logging of SOAP messages. --> > <!-- logging xmlns="http://cxf.apache.org/core" /--> > </features> > </client> > > <camelContext id="camelContext" trace="false" > xmlns="http://camel.apache.org/schema/spring"> > </camelContext> > > <bean id="jms" > class="org.apache.camel.component.jms.JmsComponent"> > <constructor-arg index="0"> > <ref bean="jmsConfiguration" /> > </constructor-arg> > <property name="connectionFactory" > ref="jmsConnectionFactory" /> > </bean> > <bean id="jmsConfiguration" > class="org.apache.camel.component.jms.JmsConfiguration"> > <property name="useMessageIDAsCorrelationID" value="true" /> > <property name="acknowledgementModeName" value="TRANSACTED" > /> > <property name="explicitQosEnabled" value="true" /> > <property name="receiveTimeout" > value="${jms.receiveTimeout}" /> > <property name="requestTimeout" > value="${jms.requestTimeout}" /> > <property name="recoveryInterval" > value="${jms.recoveryInterval}" /> > <property name="timeToLive" value="${jms.timeToLive}" /> > <property name="transacted" value="true" /> > <property name="transactedInOut" value="true" /> > <property name="transactionManager" > ref="jmsTransactionManager"/> > </bean> > > <bean id="jmsTransactionManager" > class="org.springframework.jms.connection.JmsTransactionManager"> > <property name="connectionFactory" > ref="jmsConnectionFactory" /> > </bean> > > <bean id="jmsConnectionFactory" > class="com.tibco.tibjms.TibjmsConnectionFactory"> > <property name="serverUrl" value="${jms.serverUrl}" /> > <property name="userName" value="${jms.userName}" /> > <property name="userPassword" value="${jms.userPassword}" /> > <property name="reconnAttemptCount" > value="${jms.reconnAttemptCount}" /> > <property name="reconnAttemptDelay" > value="${jms.reconnAttemptDelay}" /> > </bean> > > </beans> > > -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
