axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ruchi...@apache.org
Subject svn commit: r413828 - in /webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler: WSDoAllReceiver.java WSDoAllSender.java
Date Tue, 13 Jun 2006 08:05:22 GMT
Author: ruchithf
Date: Tue Jun 13 01:05:21 2006
New Revision: 413828

URL: http://svn.apache.org/viewvc?rev=413828&view=rev
Log:
Some minor refactoring in the rampart handlers to move SecConv processing to a method

Modified:
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java
    webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllSender.java

Modified: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java?rev=413828&r1=413827&r2=413828&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java
(original)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllReceiver.java
Tue Jun 13 01:05:21 2006
@@ -56,70 +56,51 @@
 import java.util.Vector;
 
 public class WSDoAllReceiver extends WSDoAllHandler {
-    
+
     private static final Log log = LogFactory.getLog(WSDoAllReceiver.class);
-    
+
     public WSDoAllReceiver() {
         super();
         inHandler = true;
     }
-    
+
     public void processMessage(MessageContext msgContext) throws AxisFault {
-        
+
         boolean doDebug = log.isDebugEnabled();
-        
+
         if (doDebug) {
             log.debug("WSDoAllReceiver: enter invoke() ");
         }
-        
-        String disableDoomValue = (String)msgContext.getProperty(WSSHandlerConstants.DISABLE_DOOM);
-        boolean disableDoom = disableDoomValue != null && Constants.VALUE_TRUE.equalsIgnoreCase(disableDoomValue);
-        
-        if(!disableDoom) {
+
+        String disableDoomValue = (String) msgContext
+                .getProperty(WSSHandlerConstants.DISABLE_DOOM);
+        boolean disableDoom = disableDoomValue != null
+                && Constants.VALUE_TRUE.equalsIgnoreCase(disableDoomValue);
+
+        if (!disableDoom) {
             /**
              * Temporary solution until DOOM's DocumentBuilder module is done.
-             * Use ThreadLocal to determine whether or not DOOM implementation is required.
+             * Use ThreadLocal to determine whether or not DOOM implementation
+             * is required.
              */
             // Set the DOM impl to DOOM
             DocumentBuilderFactoryImpl.setDOOMRequired(true);
         }
-        
+
         try {
 
-            Parameter param = ConversationConfiguration.getParameter(msgContext);
-            
-            if (param == null || WSSHandlerConstants.RST_ACTON_SCT.equals(msgContext.getWSAAction())
+            Parameter param = ConversationConfiguration
+                    .getParameter(msgContext);
+
+            if (param == null
+                    || WSSHandlerConstants.RST_ACTON_SCT.equals(msgContext
+                            .getWSAAction())
                     || WSSHandlerConstants.RSTR_ACTON_SCT.equals(msgContext
                             .getWSAAction())) {
                 this.processBasic(msgContext, disableDoom);
-                return;
-            }
-            
-            // Parse the configuration
-            ConversationConfiguration config = ConversationConfiguration.load(msgContext,
-                    false);
-            
-            
-            //check if there's an RSTR in the msg and process it if exists  
-            SOAPEnvelope env = (SOAPEnvelope) config.getDocument().getDocumentElement();
-            SOAPHeader header = env.getHeader();
-            if (header != null
-                    && header.getFirstChildWithName(new QName(WSSHandlerConstants.WST_NS,
-                            WSSHandlerConstants.REQUEST_SECURITY_TOKEN_RESPONSE_LN)) != null)
{
-                OMElement elem = header.getFirstChildWithName(new QName(WSSHandlerConstants.WST_NS,
-                        WSSHandlerConstants.REQUEST_SECURITY_TOKEN_RESPONSE_LN));
-                Util.processRSTR(elem, config);
+            } else {
+                this.processSecConv(msgContext);
             }
-            
-            WSSecurityEngine secEngine = new WSSecurityEngine();
-            secEngine.processSecurityHeader(config.getDocument(), null,
-                    new ConversationCallbackHandler(config), config
-                            .getCrypto());
-
-            //Convert back to llom since the inflow cannot use llom
-            msgContext.setEnvelope(Axis2Util.getSOAPEnvelopeFromDOOMDocument(
-                    config.getDocument()));
-
         } catch (AxisFault axisFault) {
             setAddressingInformationOnFault(msgContext);
             throw axisFault;
@@ -128,158 +109,200 @@
             throw new AxisFault(e);
         } finally {
 
-            if(reqData != null) {
+            if (reqData != null) {
                 reqData.clear();
                 reqData = null;
             }
-            
+
             /**
              * Temporary solution until DOOM's DocumentBuilder module is done.
-             * Use ThreadLocal to determine whether or not DOOM implementation is required.
+             * Use ThreadLocal to determine whether or not DOOM implementation
+             * is required.
              */
-            //Reset the document builder factory
+            // Reset the document builder factory
             DocumentBuilderFactoryImpl.setDOOMRequired(false);
-            
+
             if (doDebug) {
                 log.debug("WSDoAllReceiver: exit invoke()");
-            }        
+            }
         }
-        
+
+    }
+
+    /**
+     * Use WS-SecureConversation to secure messages
+     * @param msgContext
+     * @throws Exception
+     */
+    private void processSecConv(MessageContext msgContext) throws Exception {
+        // Parse the configuration
+        ConversationConfiguration config = ConversationConfiguration
+                .load(msgContext, false);
+
+        // check if there's an RSTR in the msg and process it if exists
+        SOAPEnvelope env = (SOAPEnvelope) config.getDocument()
+                .getDocumentElement();
+        SOAPHeader header = env.getHeader();
+        if (header != null
+                && header
+                        .getFirstChildWithName(new QName(
+                                WSSHandlerConstants.WST_NS,
+                                WSSHandlerConstants.REQUEST_SECURITY_TOKEN_RESPONSE_LN))
!= null) {
+            OMElement elem = header
+                    .getFirstChildWithName(new QName(
+                            WSSHandlerConstants.WST_NS,
+                            WSSHandlerConstants.REQUEST_SECURITY_TOKEN_RESPONSE_LN));
+            Util.processRSTR(elem, config);
+        }
+
+        WSSecurityEngine secEngine = new WSSecurityEngine();
+        secEngine.processSecurityHeader(config.getDocument(), null,
+                new ConversationCallbackHandler(config), config
+                        .getCrypto());
+
+        // Convert back to llom since the inflow cannot use llom
+        msgContext.setEnvelope(Axis2Util
+                .getSOAPEnvelopeFromDOOMDocument(config.getDocument()));
     }
-    
-    
-    
-    private void processBasic(MessageContext msgContext, boolean disableDoom) throws Exception
{
-        
-        //populate the properties
+
+    private void processBasic(MessageContext msgContext, boolean disableDoom)
+            throws Exception {
+
+        // populate the properties
         try {
-            HandlerParameterDecoder.processParameters(msgContext,true);
+            HandlerParameterDecoder.processParameters(msgContext, true);
         } catch (Exception e) {
             throw new AxisFault("Configuration error", e);
         }
-                    
+
         reqData = new RequestData();
-        
+
         reqData.setMsgContext(msgContext);
-        
-        //Figureout if the handler should run
+
+        // Figureout if the handler should run
         Object inFlowSecurity = null;
-        if((inFlowSecurity = getOption(WSSHandlerConstants.INFLOW_SECURITY)) == null) {
-            inFlowSecurity = getProperty(msgContext, WSSHandlerConstants.INFLOW_SECURITY);
+        if ((inFlowSecurity = getOption(WSSHandlerConstants.INFLOW_SECURITY)) == null) {
+            inFlowSecurity = getProperty(msgContext,
+                    WSSHandlerConstants.INFLOW_SECURITY);
         }
-        
-        
-        if(inFlowSecurity == null) {
+
+        if (inFlowSecurity == null) {
             return;
         }
-        
+
         Vector actions = new Vector();
         String action = null;
         if ((action = (String) getOption(WSSHandlerConstants.ACTION_ITEMS)) == null) {
-            action = (String) getProperty(msgContext, WSSHandlerConstants.ACTION_ITEMS);
+            action = (String) getProperty(msgContext,
+                    WSSHandlerConstants.ACTION_ITEMS);
         }
         if (action == null) {
             throw new AxisFault("WSDoAllReceiver: No action items defined");
         }
         int doAction = WSSecurityUtil.decodeAction(action, actions);
-        
-        if(doAction == WSConstants.NO_SECURITY) {
+
+        if (doAction == WSConstants.NO_SECURITY) {
             return;
         }
-        
+
         String actor = (String) getOption(WSHandlerConstants.ACTOR);
-        
+
         Document doc = null;
-        
+
         try {
-            doc = Axis2Util.getDocumentFromSOAPEnvelope(msgContext.getEnvelope(), disableDoom);
+            doc = Axis2Util.getDocumentFromSOAPEnvelope(msgContext
+                    .getEnvelope(), disableDoom);
         } catch (WSSecurityException wssEx) {
-            throw new AxisFault("WSDoAllReceiver: Error in converting to Document", wssEx);
+            throw new AxisFault(
+                    "WSDoAllReceiver: Error in converting to Document", wssEx);
         }
-        
-        //Do not process faults
-        SOAPConstants soapConstants = WSSecurityUtil.getSOAPConstants(doc.getDocumentElement());
+
+        // Do not process faults
+        SOAPConstants soapConstants = WSSecurityUtil.getSOAPConstants(doc
+                .getDocumentElement());
         if (WSSecurityUtil.findElement(doc.getDocumentElement(), "Fault",
                 soapConstants.getEnvelopeURI()) != null) {
             return;
         }
-        
-        
+
         /*
-         * To check a UsernameToken or to decrypt an encrypted message we
-         * need a password.
+         * To check a UsernameToken or to decrypt an encrypted message we need a
+         * password.
          */
         CallbackHandler cbHandler = null;
         if ((doAction & (WSConstants.ENCR | WSConstants.UT)) != 0) {
             cbHandler = getPasswordCB(reqData);
         }
-        
-        //Copy the WSHandlerConstants.SEND_SIGV over to the new message 
-        //context - if it exists, if signatureConfirmation in the response msg
-        String sigConfEnabled  = null;
+
+        // Copy the WSHandlerConstants.SEND_SIGV over to the new message
+        // context - if it exists, if signatureConfirmation in the response msg
+        String sigConfEnabled = null;
         if ((sigConfEnabled = (String) getOption(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION))
== null) {
-            sigConfEnabled = (String) getProperty(msgContext, WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION);
+            sigConfEnabled = (String) getProperty(msgContext,
+                    WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION);
         }
-        
 
-        //To handle sign confirmation of a sync response
-        //TODO Async response
-        if(!msgContext.isServerSide() && !"false".equalsIgnoreCase(sigConfEnabled))
{ 
+        // To handle sign confirmation of a sync response
+        // TODO Async response
+        if (!msgContext.isServerSide()
+                && !"false".equalsIgnoreCase(sigConfEnabled)) {
             OperationContext opCtx = msgContext.getOperationContext();
-            MessageContext outMsgCtx = opCtx.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
-            if(outMsgCtx != null) {
-                msgContext.setProperty(WSHandlerConstants.SEND_SIGV,outMsgCtx.getProperty(WSHandlerConstants.SEND_SIGV));
+            MessageContext outMsgCtx = opCtx
+                    .getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+            if (outMsgCtx != null) {
+                msgContext.setProperty(WSHandlerConstants.SEND_SIGV, outMsgCtx
+                        .getProperty(WSHandlerConstants.SEND_SIGV));
             } else {
-                throw new WSSecurityException("Cannot obtain request message context");
+                throw new WSSecurityException(
+                        "Cannot obtain request message context");
             }
         }
 
-        
         /*
-         * Get and check the Signature specific parameters first because
-         * they may be used for encryption too.
+         * Get and check the Signature specific parameters first because they
+         * may be used for encryption too.
          */
-        
+
         doReceiverAction(doAction, reqData);
-        
+
         Vector wsResult = null;
         try {
-            wsResult = secEngine.processSecurityHeader(doc, actor,
-                    cbHandler, reqData.getSigCrypto(), reqData.getDecCrypto());
+            wsResult = secEngine.processSecurityHeader(doc, actor, cbHandler,
+                    reqData.getSigCrypto(), reqData.getDecCrypto());
         } catch (WSSecurityException ex) {
-            throw new AxisFault(
-                    "WSDoAllReceiver: security processing failed", ex);
+            throw new AxisFault("WSDoAllReceiver: security processing failed",
+                    ex);
         }
         if (wsResult == null) { // no security header found
             if (doAction == WSConstants.NO_SECURITY) {
                 return;
             } else {
                 throw new AxisFault(
-                "WSDoAllReceiver: Request does not contain required Security header");
+                        "WSDoAllReceiver: Request does not contain required Security header");
             }
         }
-        
-        if (reqData.getWssConfig().isEnableSignatureConfirmation() && !msgContext.isServerSide())
{
+
+        if (reqData.getWssConfig().isEnableSignatureConfirmation()
+                && !msgContext.isServerSide()) {
             checkSignatureConfirmation(reqData, wsResult);
         }
-        
+
         /**
          * Set the new SOAPEnvelope
          */
 
-        
         msgContext.setEnvelope(Axis2Util.getSOAPEnvelopeFromDOOMDocument(doc));
-        
+
         /*
-         * After setting the new current message, probably modified because
-         * of decryption, we need to locate the security header. That is, we
-         * force Axis (with getSOAPEnvelope()) to parse the string, build
-         * the new header. Then we examine, look up the security header and
-         * set the header as processed.
-         *
+         * After setting the new current message, probably modified because of
+         * decryption, we need to locate the security header. That is, we force
+         * Axis (with getSOAPEnvelope()) to parse the string, build the new
+         * header. Then we examine, look up the security header and set the
+         * header as processed.
+         * 
          * Please note: find all header elements that contain the same actor
-         * that was given to processSecurityHeader(). Then check if there is
-         * a security header with this actor.
+         * that was given to processSecurityHeader(). Then check if there is a
+         * security header with this actor.
          */
         SOAPHeader header = null;
         try {
@@ -289,69 +312,68 @@
                     "WSDoAllReceiver: cannot get SOAP header after security processing",
                     ex);
         }
-        
+
         Iterator headers = header.examineHeaderBlocks(actor);
-        
+
         SOAPHeaderBlock headerBlock = null;
-        
-        while(headers.hasNext()) { //Find the wsse header
-            SOAPHeaderBlock hb = (SOAPHeaderBlock)headers.next();
+
+        while (headers.hasNext()) { // Find the wsse header
+            SOAPHeaderBlock hb = (SOAPHeaderBlock) headers.next();
             if (hb.getLocalName().equals(WSConstants.WSSE_LN)
                     && hb.getNamespace().getName().equals(WSConstants.WSSE_NS)) {
                 headerBlock = hb;
                 break;
             }
         }
-        
+
         headerBlock.setProcessed();
-        
-        
+
         /*
          * Now we can check the certificate used to sign the message. In the
-         * following implementation the certificate is only trusted if
-         * either it itself or the certificate of the issuer is installed in
-         * the keystore.
-         *
+         * following implementation the certificate is only trusted if either it
+         * itself or the certificate of the issuer is installed in the keystore.
+         * 
          * Note: the method verifyTrust(X509Certificate) allows custom
          * implementations with other validation algorithms for subclasses.
          */
-        
+
         // Extract the signature action result from the action vector
-        WSSecurityEngineResult actionResult = WSSecurityUtil
-        .fetchActionResult(wsResult, WSConstants.SIGN);
-        
+        WSSecurityEngineResult actionResult = WSSecurityUtil.fetchActionResult(
+                wsResult, WSConstants.SIGN);
+
         if (actionResult != null) {
             X509Certificate returnCert = actionResult.getCertificate();
-            
+
             if (returnCert != null) {
                 if (!verifyTrust(returnCert, reqData)) {
                     throw new AxisFault(
-                    "WSDoAllReceiver: The certificate used for the signature is not trusted");
+                            "WSDoAllReceiver: The certificate used for the signature is not
trusted");
                 }
             }
         }
-        
+
         /*
-         * Perform further checks on the timestamp that was transmitted in
-         * the header. In the following implementation the timestamp is
-         * valid if it was created after (now-ttl), where ttl is set on
-         * server side, not by the client.
-         *
+         * Perform further checks on the timestamp that was transmitted in the
+         * header. In the following implementation the timestamp is valid if it
+         * was created after (now-ttl), where ttl is set on server side, not by
+         * the client.
+         * 
          * Note: the method verifyTimestamp(Timestamp) allows custom
          * implementations with other validation algorithms for subclasses.
          */
-        
+
         // Extract the timestamp action result from the action vector
         actionResult = WSSecurityUtil.fetchActionResult(wsResult,
                 WSConstants.TS);
-        
+
         if (actionResult != null) {
             Timestamp timestamp = actionResult.getTimestamp();
-            
+
             if (timestamp != null) {
                 String ttl = null;
                 if ((ttl = (String) getOption(WSHandlerConstants.TTL_TIMESTAMP)) == null)
{
-                    ttl = (String) getProperty(msgContext,WSHandlerConstants.TTL_TIMESTAMP);
+                    ttl = (String) getProperty(msgContext,
+                            WSHandlerConstants.TTL_TIMESTAMP);
                 }
                 int ttl_i = 0;
                 if (ttl != null) {
@@ -364,53 +386,55 @@
                 if (ttl_i <= 0) {
                     ttl_i = reqData.getTimeToLive();
                 }
-                
+
                 if (!verifyTimestamp(timestamp, reqData.getTimeToLive())) {
                     throw new AxisFault(
-                    "WSDoAllReceiver: The timestamp could not be validated");
+                            "WSDoAllReceiver: The timestamp could not be validated");
                 }
             }
         }
-        
+
         /*
          * now check the security actions: do they match, in right order?
          */
         if (!checkReceiverResults(wsResult, actions)) {
             throw new AxisFault(
-            "WSDoAllReceiver: security processing failed (actions mismatch)");
-            
+                    "WSDoAllReceiver: security processing failed (actions mismatch)");
+
         }
         /*
-         * All ok up to this point. Now construct and setup the security
-         * result structure. The service may fetch this and check it.
-         * Also the DoAllSender will use this in certain situations such as:
+         * All ok up to this point. Now construct and setup the security result
+         * structure. The service may fetch this and check it. Also the
+         * DoAllSender will use this in certain situations such as:
          * USE_REQ_SIG_CERT to encrypt
          */
         Vector results = null;
-        if ((results = (Vector) getProperty(msgContext, WSHandlerConstants.RECV_RESULTS))
== null) {
+        if ((results = (Vector) getProperty(msgContext,
+                WSHandlerConstants.RECV_RESULTS)) == null) {
             results = new Vector();
-            msgContext
-            .setProperty(WSHandlerConstants.RECV_RESULTS, results);
+            msgContext.setProperty(WSHandlerConstants.RECV_RESULTS, results);
         }
         WSHandlerResult rResult = new WSHandlerResult(actor, wsResult);
         results.add(0, rResult);
     }
-    
 
     private void setAddressingInformationOnFault(MessageContext msgContext) {
         SOAPEnvelope env = msgContext.getEnvelope();
         SOAPHeader header = env.getHeader();
-        
-        if(header != null) {
-            OMElement msgIdElem = header.getFirstChildWithName(new QName(AddressingConstants.Final.WSA_NAMESPACE,AddressingConstants.WSA_MESSAGE_ID));
-            if(msgIdElem == null) {
-                msgIdElem = header.getFirstChildWithName(new QName(AddressingConstants.Submission.WSA_NAMESPACE,AddressingConstants.WSA_MESSAGE_ID));
+
+        if (header != null) {
+            OMElement msgIdElem = header.getFirstChildWithName(new QName(
+                    AddressingConstants.Final.WSA_NAMESPACE,
+                    AddressingConstants.WSA_MESSAGE_ID));
+            if (msgIdElem == null) {
+                msgIdElem = header.getFirstChildWithName(new QName(
+                        AddressingConstants.Submission.WSA_NAMESPACE,
+                        AddressingConstants.WSA_MESSAGE_ID));
             }
-            if(msgIdElem != null && msgIdElem.getText() != null) {
+            if (msgIdElem != null && msgIdElem.getText() != null) {
                 msgContext.getOptions().setMessageId(msgIdElem.getText());
             }
         }
     }
-    
-    
+
 }

Modified: webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllSender.java?rev=413828&r1=413827&r2=413828&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllSender.java
(original)
+++ webservices/axis2/trunk/java/modules/security/src/org/apache/rampart/handler/WSDoAllSender.java
Tue Jun 13 01:05:21 2006
@@ -59,11 +59,6 @@
     
     private static final Log log = LogFactory.getLog(WSDoAllSender.class);
     
-    /**
-     * TODO: This is not handled right now since converting to DOOM does not preserve
-     * the optimization information of the text nodes
-     */
-    private boolean preserveOriginalEnvelope = false;
     
     public WSDoAllSender() {
         super();
@@ -92,28 +87,7 @@
                 //If the msgs are msgs to an STS then use basic WS-Sec
                 processBasic(msgContext, disableDoom);
             } else {
-                //Parse the Conversation configuration
-                ConversationConfiguration config = ConversationConfiguration.load(msgContext,
true);
-                if(config != null)
-                msgContext.setEnvelope((SOAPEnvelope) config.getDocument()
-                        .getDocumentElement());
-                
-                if(!config.getMsgCtx().isServerSide()) {
-                    if(config.getContextIdentifier() == null && !config.getMsgCtx().isServerSide())
{
-        
-                        String sts = config.getStsEPRAddress();
-                        if(sts != null) {
-                          //Use a security token service
-                          STSRequester.issueRequest(config);
-                        } else {
-                            //Create an an SCT, include it in an RSTR 
-                            // and add the RSTR to the header
-                            this.createRSTR(config);
-                        }
-                        
-                    }
-                }
-                this.constructMessage(config);
+                processSecConv(msgContext);
             }
             
         } catch (Exception e) {
@@ -133,6 +107,36 @@
             DocumentBuilderFactoryImpl.setDOOMRequired(false);
         }     
     }
+
+    /**
+     * Use WS-SecureConversation to secure the messages
+     * @param msgContext
+     * @throws Exception
+     */
+    private void processSecConv(MessageContext msgContext) throws Exception {
+        //Parse the Conversation configuration
+        ConversationConfiguration config = ConversationConfiguration.load(msgContext, true);
+        if(config != null)
+        msgContext.setEnvelope((SOAPEnvelope) config.getDocument()
+                .getDocumentElement());
+        
+        if(!config.getMsgCtx().isServerSide()) {
+            if(config.getContextIdentifier() == null && !config.getMsgCtx().isServerSide())
{
+      
+                String sts = config.getStsEPRAddress();
+                if(sts != null) {
+                  //Use a security token service
+                  STSRequester.issueRequest(config);
+                } else {
+                    //Create an an SCT, include it in an RSTR 
+                    // and add the RSTR to the header
+                    this.createRSTR(config);
+                }
+                
+            }
+        }
+        this.constructMessage(config);
+    }
     
     /**
      * This will carryout the WS-Security related operations.
@@ -311,10 +315,6 @@
             repetition++;
             msgContext.setProperty(WSSHandlerConstants.CURRENT_REPETITON,
                     new Integer(repetition));
-            /**
-             * Preserving the OM stuff doesn't work for the repeting case
-             */
-            this.preserveOriginalEnvelope = false;
             
             this.invoke(msgContext);
         }



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


Mime
View raw message