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] Updated: (AXIS2-3228) TransportUtils aggressively changing content type from text/xml to application/xml
Date Thu, 10 Jan 2008 22:15:34 GMT

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

Mike Rheinheimer updated AXIS2-3228:
------------------------------------

    Attachment: patch_608910.txt

Attached a new patch with what I hope is the right fix.  HTTPTransportUtils.initializeMessageContext
appears to set the isDoingREST, so we should be using that to less aggressively set the content-type
in TransportUtils.createDocumentElement.  I'm testing this patch against a full axis2 build
now, and will commit if it's good.

> 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
>            Assignee: Deepal Jayasinghe
>         Attachments: patch_608910.txt
>
>
> 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