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

Freeman Fang commented on SM-1526:
----------------------------------

Hi Ron,

I don't think we shouldn't set non-serializable properties in 
NormalizedMessageImpl, the property could be anything.
Think about we can transform any kind of message (not only the cxf message) 
into the NormalizedMessage, so we need the NormalizedMessage to carry any 
property from other kind of messages, so we can't guarantee the properties in 
the NormalizedMessageImpl is serializable. 
To check the properties in NormalizedMessage before serialize it is the right 
place IMHO.

Freeman

> 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