axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Rheinheimer (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-3228) TransportUtils aggressively changing content type from text/xml to application/xml
Date Tue, 25 Sep 2007 15:31:50 GMT

    [ https://issues.apache.org/jira/browse/AXIS2-3228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12530134
] 

Mike Rheinheimer commented on AXIS2-3228:
-----------------------------------------

For clarity, the current default is to change the content type from text/xml to application/xml
on the client upon receiving the async response message.  This is a bug.  The proposed solution
would fix the bug AND enhance the runtime to allow for configuration override of this behavior.

Also, the new method would go best in BuilderUtils, not TransportUtils as I originally stated.
 I'll prepare a patch and query the mailing list for consensus.

> TransportUtils aggressively changing content type from text/xml to application/xml
> ----------------------------------------------------------------------------------
>
>                 Key: AXIS2-3228
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3228
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: kernel
>            Reporter: Mike Rheinheimer
>
> org.apache.axis2.transport.TransportUtils.createDocumentElement aggressively pushes REST
processing by performing the following checks.  This is breaking regular text/xml SOAP processing
in some environments.  See code:
>             // Some services send REST responces as text/xml. We should convert it to
>             // application/xml if its a REST response, if not it will try to use the
SOAPMessageBuilder.
>             if (HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(type)) {
>                 if (msgContext.isServerSide()) {
>                     if (msgContext.getSoapAction() == null) {
>                         type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>                     }
>                 } else if (msgContext.isDoingREST() &&
>                         !msgContext.isPropertyTrue(Constants.Configuration.SOAP_RESPONSE_MEP))
{
>                     type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>                 }
>             }
>             Builder builder = BuilderUtil.getBuilderFromSelector(type, msgContext);
> The failure case is the case where the client makes an async request.  In this case the
reply message has content type "text/xml", isServerSide() passes due to the async client listening
on a reply port (that's just the way it works...), and there is no soapAction.  All of the
checks pass in the async case, changing the content type to application/xml, therefore picking
the wrong builder (ApplicationXMLBuilder rather than SOAP11Builder).
> Proposed fix:
> I propose we add a configuration option such as BuilderForTextXML or similarly named,
and move the above code to another TransportUtils method, such as:
> Builder getBuilderForTextXML(String contentType) {
>     if (msgContext.isPropertyTrue(Constants.Configuration.TEXTXML_IS_SOAP11)) {
>         return BuilderUtil.getBuilderFromSelector(HTTPConstants.MEDIA_TYPE_TEXT_XML,
msgContext);
>     } else {
>             // Some services send REST responces as text/xml. We should convert it to
>             // application/xml if its a REST response, if not it will try to use the
SOAPMessageBuilder.
>             if (HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(type)) {
>                 if (msgContext.isServerSide()) {
>                     if (msgContext.getSoapAction() == null) {
>                         type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>                     }
>                 } else if (msgContext.isDoingREST() &&
>                         !msgContext.isPropertyTrue(Constants.Configuration.SOAP_RESPONSE_MEP))
{
>                     type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>                 }
>             }
>             return BuilderUtil.getBuilderFromSelector(type, msgContext);
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message