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.

Reply via email to