I have a simple SOAP message in which I have some string data that uses
French characters. I am using "ISO-8869-1" encoding. When I send this
message into ServiceMix via a cxf:consumer endpoint, I notice in the logs
that the resulting XML message embedded inside the SOAP envelope enters the
system with a "UTF-8" encoding. Then, the message gets placed into an
ActiveMQ queue where I have a jms:consumer endpoint read it back into the
system during which operation I get a stack trace:
2010-06-15 17:24:13:406 GMT-0400, WARN , DefaultMessageListenerContainer-3,
org.springframework.jms.listener.DefaultMessageListenerContainer - Execution
of JMS message listener failed
javax.jms.JMSException: Error sending JBI exchange
at
org.apache.servicemix.jms.endpoints.AbstractConsumerEndpoint.onMessage(AbstractConsumerEndpoint.java:580)
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: org.apache.servicemix.soap.api.Fault:
com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 middle byte 0x20 (at char
#621, byte #-1)
at
org.apache.servicemix.soap.interceptors.xml.StaxInInterceptor.handleMessage(StaxInInterceptor.java:64)
at
org.apache.servicemix.soap.core.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:85)
at
org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler.populateMessage(DefaultConsumerMarshaler.java:192)
at
org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler.createExchange(DefaultConsumerMarshaler.java:115)
at
org.apache.servicemix.jms.endpoints.AbstractConsumerEndpoint.onMessage(AbstractConsumerEndpoint.java:549)
... 10 more
My cxfbc:consumer is configured like this:
<cxfbc:consumer wsdl="classpath:my_jms.wsdl"
service="test:myJMSQueue"
endpoint="mySOAPJMSQueueIn"
targetService="test:My_JMS_Receive_Service"
targetInterface="test:My_JMS_Receive_Interface"
targetEndpoint="endpoint"
useJBIWrapper="false"
useSOAPEnvelope="false">
<cxfbc:features>
<bean
class="org.apache.cxf.transport.jms.JMSConfigFeature">
<property name="jmsConfig">
<bean
class="org.apache.cxf.transport.jms.JMSConfiguration">
<property
name="concurrentConsumers">
<value>5</value>
</property>
<property
name="connectionFactory">
<ref
bean="myConnectionFactory" />
</property>
<property
name="targetDestination">
<value>My.Inbound.Queue</value>
</property>
<property name="useJms11">
<value>false</value>
</property>
</bean>
</property>
</bean>
</cxfbc:features>
</cxfbc:consumer>
My JMS consumer is configured like this:
<jms:consumer service="test:My_JMS_RMD_Consumer"
endpoint="Input"
targetService="test:My_JMS_Router"
targetEndpoint="Input"
destinationName="RMD"
connectionFactory="#connectionFactory2"
cacheLevel="3"
transacted="xa"
messageSelector ="TargetComponent LIKE 'My_JMS_In'"
useMessageIdInResponse="true"/>
It doesn't seem to make any difference if I encode the original message in
UTF-8 either.
--
View this message in context:
http://servicemix.396122.n5.nabble.com/Character-Encoding-Problems-Using-CXF-Consumer-with-JMS-tp461424p461424.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.