Hi,

Thank you for your quick response.

As per your suggestion  I added below lines to my jms consumer xbean.xml
file and I am getting an exception now.  Here is my xbean.xml file

<beans xmlns:jms="http://servicemix.apache.org/jms/1.0";
      xmlns:test="http://test"; xmlns:amq="http://activemq.org/config/1.0";
      xmlns="http://www.springframework.org/schema/beans";
xmlns:xsi="http://http://www.w3.org/2001/XMLSchema-instance";
      
      xsi:schemaLocation="http://servicemix.apache.org/jms/1.0
http://servicemix.apache.org/schema/servicemix-jms-3.2.3.xsd
       http://activemq.org/config/1.0
http://activemq.apache.org/schema/core/activemq-core-4.1.1.xsd
       http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd";>
 
      
 
      <jms:consumer service="test:MyConsumerService" endpoint="jms"
            targetService="test:MyBeanConsumerService"
targetEndpoint="beanendpoint"
            destinationName="spq2" connectionFactory="#connectionFactory"
            concurrentConsumers="4" cacheLevel="3" marshaler="#marshaler"
            transacted="jms" />
 
      <!--
            END SNIPPET: consumer <jms:endpoint
service="test:MyConsumerService"
            endpoint="jms+soap"
targetInterfaceName="test:MyConsumerInterface"
            role="consumer" destinationStyle="queue"
            jmsProviderDestinationName="queue/A/Soap" soap="true"
            defaultMep="http://www.w3.org/2004/08/wsdl/in-out";
            connectionFactory="#connectionFactory" />
      -->
      <bean id="connectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="tcp://localhost:61616" />
            <!--
                  not working <property name="redeliveryPolicy"
ref="redeliveryPolicy"
                  />
            -->
      </bean>
      <bean id="redeliveryPolicy"
class="org.apache.activemq.RedeliveryPolicy">
            <property name="maximumRedeliveries" value="8" />
      </bean>
      
<bean id="marshaler"
           
class="org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler">
            <property name="mep"
value="http://www.w3.org/2004/08/wsdl/in-out  
" />
            <property name="rollbackOnError" value="true" />
      </bean>
 
      
 
</beans>
 
 
Exception below:
Do I need to start a transaction explicitly somewhere? If yes, how would I
start a transaction?
 
2010-04-12 21:58:49,342| 21:58:49,342 | WARN  | tenerContainer-7 |
DefaultMessageListenerContainer  | AbstractMessageListenerContainer  646 |
Execution of JMS message listener failed
javax.jms.JMSException: Error sending JBI exchange
                at
org.apache.servicemix.jms.endpoints.AbstractConsumerEndpoint.onMessage(AbstractConsumerEndpoint.java:575)
                at
org.apache.servicemix.jms.endpoints.JmsConsumerEndpoint$1.onMessage(JmsConsumerEndpoint.java:505)
                at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:518)
                at
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:479)
                at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
                at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
                at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:241)
                at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
                at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
                at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
                at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.Exception: ERROR:Fault occurred<?xml version="1.0"
encoding="UTF-8"?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Body><soapenv:Fault
xmlns:axis2ns31="http://schemas.xmlsoap.org/soap/envelope/";><faultcode>axis2ns31:Client</faultcode><faultstring>The
endpoint reference (EPR) for the Operation not found is
http://localhost/axis2/services/EchoService and the WSA Action =
null</faultstring><detail/></soapenv:Fault></soapenv:Body></soapenv:Envelope>
                at
org.simpleBeanconsumer.MyBean.onMessageExchange(MyBean.java:147)
                at
org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoint.java:230)
                at
org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:217)
                at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
                at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
                at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchangeInTx(AsyncBaseLifeCycle.java:478)
                at
org.apache.servicemix.common.AsyncBaseLifeCycle$2.run(AsyncBaseLifeCycle.java:347)
                at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
                at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
                ... 1 more
2010-04-12 21:58:49,342| 21:58:49,342 | ERROR | //127.0.0.1:4933 | Service      
                   
| ivemq.broker.TransportConnection  290 | Async error occurred:
javax.jms.JMSException: Transaction
'TX:ID:LPF004689-4862-1271123912874-0:65:3' has not been started.
javax.jms.JMSException: Transaction
'TX:ID:LPF004689-4862-1271123912874-0:65:3' has not been started.
                at
org.apache.activemq.broker.TransactionBroker.getTransaction(TransactionBroker.java:270)
                at
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:190)
                at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
                at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
                at
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:85)
                at
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:456)
                at
org.apache.activemq.command.MessageAck.visit(MessageAck.java:205)
                at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:305)
                at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179)
                at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
                at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
                at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
                at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
                at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)
                at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
                at java.lang.Thread.run(Thread.java:619)
 
Thanks & Regards
Gita
 





Freeman Fang wrote:
> 
> Hi,
> 
> You can simply add
>                       marshaler="#marshaler"
>                        transacted="jms"
> attribute for your jms consumer to enable transaction.
> here the marshaler is,
>     <bean id="marshaler"  
> class="org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler">
>         <property name="mep" value="http://www.w3.org/2004/08/wsdl/in-out 
> " />
>         <property name="rollbackOnError" value="true"/>
>      </bean>
>   notice you must set <property name="rollbackOnError" value="true"/>
> 
> then when a Error message back to your jms consumer, the jms comsumer  
> will do rollback.
> 
> 
> Freeman
> 
> 
> On 2010-4-10, at 下午12:26, gnanda wrote:
> 
>>
>> Hi,
>> I am a newbie in servicemix.
>> I am using servicemix 4 (apache-servicemix-4.0.0) . I have created a  
>> service
>> assembly with 3 SUs. The flow is as below
>> JMS consumer ->servicemix Bean class-> http provider (accessing  
>> external
>> webservice).  I like to understand how would I impose transactional
>> capability the the above message flow
>>
>> For example: if I receive any error (or fault) while calling the  
>> external
>> service from http provider component then I should be able to  
>> rollback  or
>> commit the message to the queue based one the error code.
>>
>> Any insight will be very helpful. Thank you in advance.
>>
>>
>> Here is my xbean definition of jms consumer
>>
>> <jms:consumer service="test:MyConsumerService" endpoint="jms"
>>              targetService="test:MyBeanConsumerService"  
>> targetEndpoint="beanendpoint"
>>              destinationName="spq2" connectionFactory="#connectionFactory"
>>              concurrentConsumers="4" cacheLevel="3" />
>>
>>      <bean id="connectionFactory"
>> class="org.apache.activemq.ActiveMQConnectionFactory">
>>              <property name="brokerURL" value="tcp://localhost:61616" />
>>              <!--
>>                      not working <property name="redeliveryPolicy"  
>> ref="redeliveryPolicy"
>>                      />
>>              -->
>>      </bean>
>>      <bean id="redeliveryPolicy"  
>> class="org.apache.activemq.RedeliveryPolicy">
>>              <property name="maximumRedeliveries" value="8" />
>>      </bean>
>> Here is my xbean definition of the bean class
>> <bean:endpoint service="test:MyBeanConsumerService"  
>> endpoint="beanendpoint"
>> bean="#myBean"/>
>>
>>  <bean id="myBean" class="org.simpleBeanconsumer.MyBean"/>
>>
>> </beans>
>>
>> Here is my xbean definition of the http provider
>>
>> <http:endpoint service="test:TemperatureConverterService1"
>>                 endpoint="TemperatureConverterServiceSoap12Binding"
>>                 role="provider"
>>
>> locationURI="http://localhost/axis2/services/TemperatureConverterService 
>> "
>>
>>                 defaultMep="http://www.w3.org/2004/08/wsdl/in-out";
>>                 />
>> <!--
>> wsdlResource="http://localhost/axis2/services/TemperatureConverterService?wsdl
>>  
>> "
>> -->
>> </beans>
>> -- 
>> View this message in context:
>> http://old.nabble.com/SMX4-handling-transaction-tp28199896p28199896.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
> 
> 
> -- 
> Freeman Fang
> ------------------------
> Open Source SOA: http://fusesource.com
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/SMX4-handling-transaction-tp28199896p28219212.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to