Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Address Endpoint encoding attribute not working #3309

Open
TomasTokaMrazek opened this issue Apr 10, 2024 · 0 comments
Open

Address Endpoint encoding attribute not working #3309

TomasTokaMrazek opened this issue Apr 10, 2024 · 0 comments

Comments

@TomasTokaMrazek
Copy link

Address Endpoint definition should allow setting encoding attribute according to documentation.

It's not used correctly in Axis2 nor in Integration Studio, which does not have proper field for encoding and even removes the attribute in source view.

In class Axis2FlexibleMEPClient the usage is in method send().

//get the endpoint encoding attribute
String strCharSetEncoding = "";
if (endpoint.getCharSetEncoding() != null) {
    strCharSetEncoding = ";" + endpoint.getCharSetEncoding();
}            

And later in the same method.

//ESBJAVA-3447, Appending charset, if exist in property
ContentType contentType = new ContentType(trpContentType);
if (contentType.getParameter(HTTPConstants.CHAR_SET_ENCODING) != null) {
    strCharSetEncoding = "; charset=" + contentType.getParameter(HTTPConstants.CHAR_SET_ENCODING);
}

With this code, it's expected, that the value of the encoding attribute should be charset=UTF-8 in order to properly set Content-Type as application/soap+xml;charset=UTF-8. However, if I do just that, SOAPMessageFormatter fails due to unknown encoding. Which is understandable, as the encoding value should be only UTF-8. In order to fix this issue, Axis2FlexibleMEPClient needs to be fixed as follows.

//get the endpoint encoding attribute
String strCharSetEncoding = "";
if (endpoint.getCharSetEncoding() != null) {
    strCharSetEncoding = "; charset=" + endpoint.getCharSetEncoding();
}            

SOAPMessageFormatter exception.

[2024-04-10 12:50:11,164] ERROR {Axis2Sender} - {proxy:SDX-IDM-Service} Unexpected error during sending message out. java.io.UnsupportedEncodingException: charset=UTF-8 org.apache.axis2.AxisFault: java.io.UnsupportedEncodingException: charset=UTF-8
	at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
	at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:82)
	at org.apache.synapse.transport.passthru.PassThroughHttpSender.sendRequestContent(PassThroughHttpSender.java:424)
	at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:283)
	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
	at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:206)
	at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:188)
	at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
	at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:675)
	at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:86)
	at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:591)
	at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:423)
	at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:79)
	at org.apache.synapse.endpoints.ResolvingEndpoint.sendMessage(ResolvingEndpoint.java:82)
	at org.apache.synapse.endpoints.ResolvingEndpoint.send(ResolvingEndpoint.java:59)
	at org.apache.synapse.mediators.builtin.CallMediator.handleNonBlockingCall(CallMediator.java:387)
	at org.apache.synapse.mediators.builtin.CallMediator.mediate(CallMediator.java:200)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:110)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
	at org.apache.synapse.config.xml.AnonymousListMediator.mediate(AnonymousListMediator.java:37)
	at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:205)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:110)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
	at org.apache.synapse.mediators.template.TemplateMediator.mediate(TemplateMediator.java:136)
	at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:170)
	at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:93)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:110)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
	at org.apache.synapse.config.xml.AnonymousListMediator.mediate(AnonymousListMediator.java:37)
	at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:205)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:110)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
	at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
	at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:214)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:110)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
	at org.apache.synapse.config.xml.AnonymousListMediator.mediate(AnonymousListMediator.java:37)
	at org.apache.synapse.config.xml.SwitchCase.mediate(SwitchCase.java:69)
	at org.apache.synapse.mediators.filters.SwitchMediator.mediate(SwitchMediator.java:134)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:110)
	at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
	at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
	at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:240)
	at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
	at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:470)
	at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:186)
	at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: javax.xml.stream.XMLStreamException: java.io.UnsupportedEncodingException: charset=UTF-8
	at com.ctc.wstx.stax.WstxOutputFactory.createSW(WstxOutputFactory.java:274)
	at com.ctc.wstx.stax.WstxOutputFactory.createXMLStreamWriter(WstxOutputFactory.java:134)
	at org.apache.axiom.util.stax.wrapper.XMLOutputFactoryWrapper.createXMLStreamWriter(XMLOutputFactoryWrapper.java:66)
	at org.apache.axiom.om.util.StAXUtils$5.run(StAXUtils.java:397)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
	at org.apache.axiom.om.util.StAXUtils.createXMLStreamWriter(StAXUtils.java:395)
	at org.apache.axiom.om.impl.MTOMXMLStreamWriter.<init>(MTOMXMLStreamWriter.java:128)
	at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:191)
	at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78)
	... 48 more
Caused by: java.io.UnsupportedEncodingException: charset=UTF-8
	at java.base/sun.nio.cs.StreamEncoder.forOutputStreamWriter(StreamEncoder.java:67)
	at java.base/java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:99)
	at com.ctc.wstx.stax.WstxOutputFactory.createSW(WstxOutputFactory.java:270)
	... 56 more
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant