[ 
https://issues.apache.org/activemq/browse/SM-1526?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=45317#action_45317
 ] 

Ron Gavlin commented on SM-1526:
--------------------------------

One other note. Your original patch appeared to fix the JdbcAuditor problem. 
However, an exception would be thrown when an attempt was made to de-serialize 
one of these cxf "audited" exchanges and get its contents. Obviously, this 
defeats the whole purpose of the auditor in the first place. BTW, this used to 
work in FUSE ESB 3.3.1.0.

To avoid this regression in the future, would it make sense to write a unit 
test to verify that an audited, serialized, cxf-originated normalized message 
w/ custom properties and attachments can be successfully de-serialized, 
including its content, properties and attachments?

In the meantime, I will try out your new CXF patch and see if it works here.

Thanks,

- Ron


> MessageExchange (org.apache.cxf.transport.jbi.JBIDestination) not serializable
> ------------------------------------------------------------------------------
>
>                 Key: SM-1526
>                 URL: https://issues.apache.org/activemq/browse/SM-1526
>             Project: ServiceMix
>          Issue Type: Bug
>          Components: servicemix-cxf-bc
>    Affects Versions: 3.2.3
>            Reporter: Ron Gavlin
>            Assignee: Freeman Fang
>            Priority: Critical
>             Fix For: 3.2.3, 3.3
>
>         Attachments: wsdl-first-cxf-sa-3.3.1.3-fuse.jar
>
>
> When I invoke the attached flow with the JdbcAuditor enabled in 
> servicemix.xml, the following error is generated. This prevents us from 
> monitoring flows that use CXF components which is a major problem for us.
> 02:33:21,390 | ERROR | pool-flow.seda.servicemix-cxf-se-thread-1 | 
> JdbcAuditor              | mix.jbi.audit.jdbc.JdbcAuditor  137 | Could not 
> persist exchange
> java.io.NotSerializableException: org.apache.cxf.transport.jbi.JBIDestination
>       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)
>       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
>       at java.util.HashMap.writeObject(HashMap.java:1039)
>       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:917)
>       at 
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
>       at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
>       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
>       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
>       at 
> org.apache.servicemix.jbi.messaging.NormalizedMessageImpl.writeExternal(NormalizedMessageImpl.java:311)
>       at 
> java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1310)
>       at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1288)
>       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
>       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
>       at 
> org.apache.servicemix.jbi.messaging.ExchangePacket.writeExternal(ExchangePacket.java:406)
>       at 
> java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1310)
>       at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1288)
>       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
>       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
>       at 
> org.apache.servicemix.jbi.messaging.ExchangePacket.getData(ExchangePacket.java:472)
>       at 
> org.apache.servicemix.jbi.audit.jdbc.JdbcAuditor.exchangeSent(JdbcAuditor.java:122)
>       at 
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:379)
>       at 
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:470)
>       at 
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:442)
>       at 
> org.apache.servicemix.common.EndpointDeliveryChannel.sendSync(EndpointDeliveryChannel.java:95)
>       at 
> org.apache.cxf.transport.jbi.JBIDestinationOutputStream.commitOutputMessage(JBIDestinationOutputStream.java:127)
>       at 
> org.apache.cxf.transport.jbi.JBIDestinationOutputStream.doClose(JBIDestinationOutputStream.java:69)
>       at 
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:167)
>       at 
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
>       at 
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>       at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
>       at 
> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:74)
>       at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
>       at 
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>       at 
> org.apache.cxf.transport.jbi.JBIDispatcherUtil.dispatch(JBIDispatcherUtil.java:156)
>       at 
> org.apache.servicemix.cxfse.CxfSeEndpoint.process(CxfSeEndpoint.java:232)
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:540)
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:492)
>       at 
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>       at 
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
>       at 
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>       at 
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
>       at 
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>       at java.lang.Thread.run(Thread.java:595)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to