Wrong encoding using JMS Transport ---------------------------------- Key: CXF-1668 URL: https://issues.apache.org/jira/browse/CXF-1668 Project: CXF Issue Type: Bug Components: Transports Affects Versions: 2.1 Environment: MS Windows XP, Sun Solaris Reporter: Eduard Hildebrandt
In class JMSConduit getBytes() is used to transform the string in a byte array. byte[] bytes = null; if (response instanceof String) { String requestString = (String)response; bytes = requestString.getBytes(); } else { bytes = (byte[])response; } getBytes() uses the standard encoding of the plattform. This is wrong because the encoding of the message must be used. I have written an interceptor as workaround to solve this issue: public class EncodingInterceptor extends AbstractPhaseInterceptor<Message> { public EncodingInterceptor() { super(Phase.RECEIVE); } public void handleMessage(Message message) { try { InputStream inputStream = message.getContent(InputStream.class); ByteArrayOutputStream baos = new ByteArrayOutputStream(); while (true) { int datum = inputStream.read(); if (datum == -1) break; baos.write(datum); } String string = baos.toString(); ByteArrayInputStream bais = new ByteArrayInputStream(string.getBytes("UTF-8")); message.setContent(InputStream.class, bais); } catch (IOException e) { e.printStackTrace(); } } public void handleFault(Message messageParam) { } } But the issue should be solved in JMSConduit class. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.