Guillaume Nodet wrote :
I think that in your scenario, no transaction is started.
You should configure the jms consumer to use JCA instead
of plain jms. This would ensure a transaction is started by the
jms component, the message consumption would be enlisted
in the transaction, and the transaction would be sent with the
exchange to the next step...
On 3/8/07, Dominique DE VITO <[EMAIL PROTECTED]> wrote:
[stuff]
I have just started to use JMS with JCA according to the distrib examples.
[1] => my 2nd step pipeline definition
[2] => the error I've got when running this step.
Thanks for any help.
Regards,
Dominique
[1] my ""JMS/queue reader=>XSLT transformation=>JMS/queue writer""
configuration
<!-- JMS Xa-enabled pooled factory -->
<amqpool:jcaPooledConnectionFactory
name="jmsFactory"
transactionManager="#transactionManager"
maxConnections="10"
brokerURL="${activemq.url}"
depends-on="broker" />
[...]
<sm:container id="jbi"
rootDir="./data/smx"
MBeanServer="#jmxServer"
installationDirPath="./install"
deploymentDirPath="./deploy"
monitorInterval="1"
transactionManager="#transactionManager"
createJmxConnector="false"
depends-on="jndi"
flowName="seda"
autoEnlistInTransaction="true">
<sm:activationSpec componentName="inputReceiver_1">
<sm:component>
<jms:component>
<jms:endpoints>
<jms:endpoint
role="consumer"
endpoint="jmsbeginningpoint_1"
service="foo:myJmsReceiver_1"
connectionFactory="#jmsFactory"
targetService="foo:transformer"
defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
synchronous="true"
processorName="jca"
bootstrapContext="#bootstrapContext"
resourceAdapter="#activemqRA"
>
<jms:activationSpec>
<amqra:activationSpec destination="queue_1_1"
destinationType="javax.jms.Queue" />
</jms:activationSpec>
</jms:endpoint>
</jms:endpoints>
</jms:component>
</sm:component>
</sm:activationSpec>
<sm:activationSpec service="foo:transformer" componentName="transformer"
endpoint="transformer"
destinationService="foo:myJmsSender_2">
<sm:component>
<bean class="org.apache.servicemix.components.xslt.XsltComponent">
<property name="xsltResource" value="transf_demo.xsl" />
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="outputSender_2">
<sm:component>
<jms:component>
<jms:endpoints>
<jms:endpoint
role="provider"
endpoint="jmsendpoint_2"
service="foo:myJmsSender_2"
connectionFactory="#jmsFactory"
processorName="jca"
jmsProviderDestinationName="queue_2"
destinationStyle="queue"
>
</jms:endpoint>
</jms:endpoints>
</jms:component>
</sm:component>
</sm:activationSpec>
</sm:activationSpecs>
[2] see the error traces
java.lang.RuntimeException: Endpoint after delivery notification failure
at
org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:218)
at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:750)
at
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165)
at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:290)
at
org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalStateException: Cannot log transactions
unles XAResources are named!
[EMAIL PROTECTED]
at
org.apache.geronimo.transaction.manager.TransactionImpl$TransactionBranch.getResourceName(TransactionImpl.java:716)
at
org.apache.geronimo.transaction.log.HOWLLog.prepare(HOWLLog.java:254)
at
org.apache.geronimo.transaction.manager.TransactionImpl.internalPrepare(TransactionImpl.java:443)
at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:315)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:264)
at org.jencks.XAEndpoint.afterDelivery(XAEndpoint.java:105)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:126)
at
org.apache.activemq.ra.MessageEndpointProxy.afterDelivery(MessageEndpointProxy.java:65)
at
org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:216)
... 7 more
INFO - ServerSessionImpl:0 - Endpoint failed to process
message. Reason: java.lang.RuntimeException: Endpoint after delivery
notification failure
DEBUG - ServerSessionImpl:0 - run loop end
DEBUG - ServerSessionImpl:0 - Run finished
DEBUG - ServerSessionImpl:0 - Work completed:
javax.resource.spi.work.WorkEvent[source=Work :ServerSessionImpl:0]
DEBUG - CachedIntrospectionResults - Found bean property 'type' of
type [java.lang.String]
DEBUG - CachedIntrospectionResults - Found bean property 'unknown'
of type [boolean]
DEBUG - CachedIntrospectionResults - Class
[org.apache.servicemix.jbi.logging.LogService] is cache-safe
DEBUG - CollectionFactory - Creating [java.util.LinkedHashMap]
DEBUG - ServerSessionImpl:1 - Endpoint failed to process message.
java.lang.RuntimeException: Endpoint after delivery notification failure
at
org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:218)
at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:750)
at
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165)
at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:290)
at
org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalStateException: Cannot log transactions
unles XAResources are named!
[EMAIL PROTECTED]
at
org.apache.geronimo.transaction.manager.TransactionImpl$TransactionBranch.getResourceName(TransactionImpl.java:716)
at
org.apache.geronimo.transaction.log.HOWLLog.prepare(HOWLLog.java:254)
at
org.apache.geronimo.transaction.manager.TransactionImpl.internalPrepare(TransactionImpl.java:443)
at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:315)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:264)
at org.jencks.XAEndpoint.afterDelivery(XAEndpoint.java:105)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:126)
at
org.apache.activemq.ra.MessageEndpointProxy.afterDelivery(MessageEndpointProxy.java:65)
at
org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:216)
... 7 more
INFO - ServerSessionImpl:1 - Endpoint failed to process
message. Reason: java.lang.RuntimeException: Endpoint after delivery
notification failure