Faults handling have not changed.
You need to build trunk from sources.
See http://issues.apache.org/activemq/browse/SM-756
for the rollbackOnError

On 11/24/06, Eyji <[EMAIL PROTECTED]> wrote:

Thanks!! Would that fix be in the trunk or where can I look in order to test?
You mention a rollback of status ERROR will be rolled back, which is good,
but I do hope that validation "faults" will pass on as in our case to the
Drools component.

Cheers,
/Eyji


gnodet wrote:
>
> This has been fixed.  You need to set the rollbackOnError="true"
> attribute on the jca consumer endpoint, and it will rollback the
> transaction when an exchange with an ERROR status comes back.
>
> On 11/24/06, Eyji <[EMAIL PROTECTED]> wrote:
>>
>> I've tried with both synchronous and asynchronous, but with the same
>> results.
>> Makes the error consistent at least :) Here is my whole service unit for
>> the
>> validation with endpoints and all, note that I'm now using a patched
>> ValidateComponent:
>>
>>         <sm:serviceunit id="jbi">
>>                 <sm:activationSpecs>
>>                        <!--
>>                                 XML validation.
>>                          -->
>>                         <sm:activationSpec service="sys:validerare"
>> endpoint="eisInformationfragaValiderare"
>>
>> destinationService="sys:droolsRouter"
>> destinationEndpoint="sysInformationRouting">
>>                                 <sm:component>
>>                                         <bean
>> class="se.sys.smpatch.components.validation.ValidateComponent">
>>                                                 <property
>> name="schemaResource" value="classpath:SYSInformation.xsd"
>> />
>>                                                 <property
>> name="errorHandler"
>> ref="messageAggregatingErrorHandlerFactory" />
>>                                         </bean>
>>                                 </sm:component>
>>                         </sm:activationSpec>
>>
>>                         <!--
>>                                 Drools routing
>>                          -->
>>                         <sm:activationSpec service="sys:droolsRouter"
>> endpoint="sysInformationRouting">
>>                                 <sm:component>
>>                                         <bean
>> class="org.apache.servicemix.components.drools.DroolsComponent">
>>                                                 <property
>> name="ruleBaseResource" value="classpath:drools/router.xml"
>> />
>>                                         </bean>
>>                                 </sm:component>
>>                         </sm:activationSpec>
>>
>>                 </sm:activationSpecs>
>>         </sm:serviceunit>
>>
>>
>> The Dools rule has the following configuration:
>>
>>         <rule name="Rule">
>>                 <parameter identifier="exchange">
>>
>> <class>javax.jbi.messaging.MessageExchange</class>
>>                 </parameter>
>>                 <jbi:condition>somerule</jbi:condition>
>>                 <jbi:invoke service="sys:sendToJmsOutQueue"/>
>>         </rule>
>>
>> My idea here is that the Drools rule take the XML message, send it
>> further
>> through the system if valid and to an JMS-based Errorqueue if invalid.
>>
>> Hope this gives the info needed to solve the issue. Is there a JIRA
>> number I
>> can poll to see when the bug is fixed?
>>
>> Regards,
>> /Eyji
>>
>>
>> gnodet wrote:
>> >
>> > This is an exception I will try to fix in the coming days.
>> > I think the problem is due to a bug in the jca consumer from
>> > servicemix-jms, which does not handle well when an exchange
>> > with ERROR status is received.  I guess you set the synchronous="true"
>> > flag on the jca endpoint ... What's the target endpoint ?
>> >
>> > Anyway, in your case, you should have a fault, not an error.
>> >
>> > On 11/23/06, Eyji <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Hello again!
>> >>
>> >> I took Gran Macdonalds advice and commented out the lines of code he
>> >> suggested in the JIRA for this issue
>> >> (https://issues.apache.org/activemq/browse/SM-728), and actually I do
>> get
>> >> further down the road to successful completion :)
>> >> The problem now is that I get a couple of other exceptions:
>> >>
>> >> java.lang.UnsupportedOperationException: A destination must be
>> specified.
>> >>         at
>> >>
>> 
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:448)
>> >>         at
>> >>
>> 
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:356)
>> >>         at
>> >>
>> 
org.apache.servicemix.jms.jca.JcaConsumerProcessor.process(JcaConsumerProcessor.java:142)
>> >>         at
>> >>
>> 
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:431)
>> >>         at
>> >>
>> 
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:43)
>> >>         at
>> >>
>> 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:624)
>> >>         at
>> >>
>> 
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:170)
>> >>         at
>> >>
>> org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow.onMessage(JCAFlow.java:602)
>> >>         at org.jencks.XAEndpoint.onMessage(XAEndpoint.java:126)
>> >>         at
>> >>
>> 
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:120)
>> >>         at
>> >>
>> 
org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:60)
>> >>         at
>> >> org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:692)
>> >>         at
>> >>
>> org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:163)
>> >>         at
>> >>
>> org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
>> >>         at
>> >> EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
>> >> Source)
>> >>         at java.lang.Thread.run(Thread.java:595)
>> >> DEBUG - DeliveryChannelImpl            - Send
>> >> ID:PC-614199-1864-1164294222089-9:2 in DeliveryChannel{servicemix-jms}
>> >> DEBUG - DeliveryChannelImpl            - Sent: InOnly[
>> >>   id: ID:PC-614199-1864-1164294222089-9:2
>> >>   status: Error
>> >>   role: consumer
>> >>   service: {http://rps.police.se/system}validation
>> >>   endpoint: myEndpoint
>> >>   in: <?xml version="1.0" encoding="UTF-8"?>
>> >>
>> >>   error: java.lang.UnsupportedOperationException: A destination must
>> be
>> >> specified.
>> >> ]
>> >>
>> >> DEBUG - DeliveryChannelImpl            - Exception processing:
>> >> ID:PC-614199-1864-1164294222089-9:2 in DeliveryChannel{servicemix-jms}
>> >> ERROR - JmsComponent                   - Error setting exchange status
>> to
>> >> ERROR
>> >> javax.jbi.messaging.MessagingException: illegal call to send /
>> sendSync
>> >>         at
>> >>
>> 
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
>> >>         at
>> >>
>> 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:364)
>> >>         at
>> >>
>> 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:411)
>> >>         at
>> >>
>> 
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:55)
>> >>         at
>> >>
>> 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:624)
>> >>         at
>> >>
>> 
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:170)
>> >>         at
>> >>
>> org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow.onMessage(JCAFlow.java:602)
>> >>         at org.jencks.XAEndpoint.onMessage(XAEndpoint.java:126)
>> >>         at
>> >>
>> 
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:120)
>> >>         at
>> >>
>> 
org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:60)
>> >>         at
>> >> org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:692)
>> >>         at
>> >>
>> org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:163)
>> >>         at
>> >>
>> org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
>> >>         at
>> >> EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
>> >> Source)
>> >>         at java.lang.Thread.run(Thread.java:595)
>> >>
>> >> Could be blissful ignorance on my behalf, or an effect of the
>> codechange
>> >> in
>> >> ValidadateComponent. The flow here is that when the invalid XML is
>> >> returned,
>> >> it is evaluated using a drools rule and sent to a JMS queue. I've
>> tested
>> >> the
>> >> flow successfully using valid XML documents. Yet again, I'm greatful
>> for
>> >> any
>> >> hints on what this could be.
>> >>
>> >> Cheers,
>> >> /Eyji
>> >>
>> >>
>> >>
>> >> Eyji wrote:
>> >> >
>> >> > Thanks for your quick reply yet again!
>> >> > We'll fix a JIRA for this, but is there a workaround for this you
>> could
>> >> > recommend which we could try in SM? Maybe switching implementations
>> or
>> >> > something, surely someone else should have run into this issue
>> before.
>> >> >
>> >> > /Eyji
>> >> >
>> >> >
>> >> > gnodet wrote:
>> >> >>
>> >> >> The problems comes from the SourceTransformer class which is
>> >> >> used by the CopyTransformer.
>> >> >> When asked for a DOM representation of a NormalizedMessage, it
>> >> >> stores the parsed DOM node in a property on the message.
>> >> >>
>> >> >> Could you please raise a JIRA for this issue ?
>> >> >>
>> >> >> On 10/31/06, Eyji <[EMAIL PROTECTED]> wrote:
>> >> >>>
>> >> >>> Hope you can help me out here: A validation component of mine is
>> >> >>> configured
>> >> >>> as follows:
>> >> >>>
>> >> >>> <sm:activationSpec componentName="validerare"
>> >> service="foo:validerare"
>> >> >>> endpoint="validerare" destinationService="foo:loggare">
>> >> >>>                                 <sm:component>
>> >> >>>                                         <bean
>> >> >>>
>> >> class="org.apache.servicemix.components.validation.ValidateComponent">
>> >> >>>                                                 <property
>> >> >>> name="schemaResource" value="classpath:FOOAnwer.xsd" />
>> >> >>>                                                 <property
>> >> >>> name="errorHandler"
>> >> >>> ref="messageAggregatingErrorHandlerFactory"/>
>> >> >>>                                         </bean>
>> >> >>>                                         <bean
>> >> >>>
>> >> class="org.apache.servicemix.components.validation.ValidateComponent">
>> >> >>>                                                 <property
>> >> >>> name="schemaResource" value="classpath:FOOQuestion.xsd" />
>> >> >>>                                                 <property
>> >> >>> name="errorHandler"
>> >> >>> ref="messageAggregatingErrorHandlerFactory"/>
>> >> >>>                                         </bean>
>> >> >>>         </sm:component>
>> >> >>> </sm:activationSpec>
>> >> >>>
>> >> >>> The xml messages are retrieved from a JMS-queue. If the XML file
>> >> >>> FOOAnswer.xml is validated first, all is OK. Upon dropping the
>> >> >>> FOOAnswer.xml
>> >> >>> on the Queue, the Runtime-exception below is thrown. If I try to
>> >> resend
>> >> >>> FOOAnswer.xml again, I get the same exception and nothing works
>> until
>> >> I
>> >> >>> restart SM.
>> >> >>>
>> >> >>> Stacktrace of Exception:
>> >> >>> ---------------------------------
>> >> >>>
>> >> >>> WARN  - ValidateComponent              - Unable to handle error:
>> >> >>> java.lang.RuntimeException: javax.xml.transform.dom.DOMSource
>> >> >>> java.lang.RuntimeException: javax.xml.transform.dom.DOMSource
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.activemq.command.ActiveMQObjectMessage.storeContent(ActiveMQObjectMessage.java:102)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.activemq.command.ActiveMQObjectMessage.setObject(ActiveMQObjectMessage.java:144)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.activemq.ActiveMQSession.createObjectMessage(ActiveMQSession.java:361)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.activemq.ra.ManagedSessionProxy.createObjectMessage(ManagedSessionProxy.java:215)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow.sendJmsMessage(JCAFlow.java:703)
>> >> >>>         at
>> >> >>>
>> >>
>> org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow.doRouting(JCAFlow.java:561)
>> >> >>>         at
>> >> >>>
>> >>
>> org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow.doSend(JCAFlow.java:520)
>> >> >>>         at
>> >> >>>
>> >>
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.send(AbstractFlow.java:121)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:298)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:375)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:411)
>> >> >>>         at
>> >> >>>
>> >>
>> org.apache.servicemix.components.util.PojoSupport.fail(PojoSupport.java:275)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.components.util.TransformComponentSupport.onMessageExchange(TransformComponentSupport.java:92)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:624)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:169)
>> >> >>>         at
>> >> >>>
>> >>
>> org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow.onMessage(JCAFlow.java:596)
>> >> >>>         at org.jencks.XAEndpoint.onMessage(XAEndpoint.java:126)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:120)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:60)
>> >> >>>         at
>> >> >>> org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:692)
>> >> >>>         at
>> >> >>>
>> >>
>> org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:163)
>> >> >>>         at
>> >> >>>
>> >>
>> org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
>> >> >>>         at
>> >> >>> EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
>> >> >>> Source)
>> >> >>>         at java.lang.Thread.run(Thread.java:595)
>> >> >>> Caused by: java.io.NotSerializableException:
>> >> >>> javax.xml.transform.dom.DOMSource
>> >> >>>         at
>> >> >>>
>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
>> >> >>>         at
>> >> >>>
>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
>> >> >>>         at java.util.HashMap.writeObject(HashMap.java:983)
>> >> >>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> >> Method)
>> >> >>>         at
>> >> >>>
>> >>
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> >> >>>         at
>> >> >>>
>> >>
>> 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> >> >>>         at java.lang.reflect.Method.invoke(Method.java:585)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
>> >> >>>         at
>> >> >>>
>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
>> >> >>>         at
>> >> >>>
>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.messaging.NormalizedMessageImpl.writeExternal(NormalizedMessageImpl.java:305)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1304)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1282)
>> >> >>>         at
>> >> >>>
>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
>> >> >>>         at
>> >> >>>
>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
>> >> >>>         at
>> >> >>>
>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.messaging.ExchangePacket.writeExternal(ExchangePacket.java:373)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.writeExternal(MessageExchangeImpl.java:562)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1304)
>> >> >>>         at
>> >> >>>
>> >>
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1282)
>> >> >>>         at
>> >> >>>
>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
>> >> >>>         at
>> >> >>>
>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
>> >> >>>         at
>> >> >>>
>> >>
>> 
org.apache.activemq.command.ActiveMQObjectMessage.storeContent(ActiveMQObjectMessage.java:98)
>> >> >>>
>> >> >>> Regards,
>> >> >>> /Eyji
>> >> >>> --
>> >> >>> View this message in context:
>> >> >>> http://www.nabble.com/Validation-Exception-tf2545818.html#a7093895
>> >> >>> Sent from the ServiceMix - User mailing list archive at
>> Nabble.com.
>> >> >>>
>> >> >>>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Cheers,
>> >> >> Guillaume Nodet
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/Validation-Exception-tf2545818s12049.html#a7510181
>> >> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>> > --
>> > Cheers,
>> > Guillaume Nodet
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Validation-Exception-tf2545818s12049.html#a7518327
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
>
>
> --
> Cheers,
> Guillaume Nodet
>
>

--
View this message in context: 
http://www.nabble.com/Validation-Exception-tf2545818s12049.html#a7519144
Sent from the ServiceMix - User mailing list archive at Nabble.com.




--
Cheers,
Guillaume Nodet

Reply via email to