[
https://issues.apache.org/jira/browse/CXF-1668?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christian Schneider updated CXF-1668:
-------------------------------------
Issue Type: Improvement (was: Bug)
Changing type to improvement as there is already a fix for the bug mentioned.
> Wrong encoding using JMS Transport
> ----------------------------------
>
> Key: CXF-1668
> URL: https://issues.apache.org/jira/browse/CXF-1668
> Project: CXF
> Issue Type: Improvement
> 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.