You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ia...@apache.org on 2004/03/05 06:20:00 UTC

cvs commit: ws-axis/java/src/org/apache/axis/transport/http AxisServlet.java

ias         2004/03/04 21:20:00

  Modified:    java/src/org/apache/axis/transport/http AxisServlet.java
  Log:
  Added support of synchronization between request and response.
  
  Revision  Changes    Path
  1.176     +22 -0     ws-axis/java/src/org/apache/axis/transport/http/AxisServlet.java
  
  Index: AxisServlet.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/transport/http/AxisServlet.java,v
  retrieving revision 1.175
  retrieving revision 1.176
  diff -u -r1.175 -r1.176
  --- AxisServlet.java	25 Feb 2004 14:02:45 -0000	1.175
  +++ AxisServlet.java	5 Mar 2004 05:20:00 -0000	1.176
  @@ -29,6 +29,7 @@
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
   import javax.xml.soap.SOAPException;
  +import javax.xml.soap.SOAPMessage;
   
   import org.apache.axis.AxisEngine;
   import org.apache.axis.AxisFault;
  @@ -566,6 +567,16 @@
               msgContext.setRequestMessage(requestMsg);
               String url = req.getRequestURL().toString();
               msgContext.setProperty(MessageContext.TRANS_URL, url);
  +            // put character encoding of request to message context
  +            // in order to reuse it during the whole process.   
  +            String requestEncoding;
  +            try {
  +                requestEncoding = (String) requestMsg.getProperty(SOAPMessage.CHARACTER_SET_ENCODING);
  +                if (requestEncoding != null) {
  +                    msgContext.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, requestEncoding);
  +                }
  +            } catch (SOAPException e1) {
  +            }
   
               try {
                   /**
  @@ -616,12 +627,14 @@
                   responseMsg = msgContext.getResponseMessage();
                   if (responseMsg == null) {
                       responseMsg = new Message(fault);
  +                    ((org.apache.axis.SOAPPart) responseMsg.getSOAPPart()).getMessage().setMessageContext(msgContext);
                   }
               } catch (Exception e) {
                   //other exceptions are internal trouble
                   responseMsg = msgContext.getResponseMessage();
                   res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                   responseMsg = convertExceptionToAxisFault(e, responseMsg);
  +                ((org.apache.axis.SOAPPart) responseMsg.getSOAPPart()).getMessage().setMessageContext(msgContext);
               }
           } catch (AxisFault fault) {
               processAxisFault(fault);
  @@ -629,6 +642,7 @@
               responseMsg = msgContext.getResponseMessage();
               if (responseMsg == null) {
                   responseMsg = new Message(fault);
  +                ((org.apache.axis.SOAPPart) responseMsg.getSOAPPart()).getMessage().setMessageContext(msgContext);
               }
           }
           
  @@ -639,6 +653,14 @@
           /* Send response back along the wire...  */
           /***********************************/
           if (responseMsg != null) {
  +            // synchronize the character encoding of request and response
  +            String responseEncoding = (String) msgContext.getProperty(SOAPMessage.CHARACTER_SET_ENCODING);
  +            if (responseEncoding != null) {
  +                try {
  +                    responseMsg.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, responseEncoding);
  +                } catch (SOAPException e) {
  +                }
  +            }
               //determine content type from message response
               contentType = responseMsg.getContentType(msgContext.getSOAPConstants());
               sendResponse(contentType, res, responseMsg);