You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2002/09/02 02:13:21 UTC

cvs commit: xml-axis/java/src/org/apache/axis/handlers/soap SOAPService.java

dims        2002/09/01 17:13:21

  Modified:    java/src/org/apache/axis/providers/java JavaProvider.java
               java/src/org/apache/axis/handlers/soap SOAPService.java
  Log:
  Update from " Greg Truty <gt...@us.ibm.com>" for "JAX-RPC Handler Support in Axis".
  
  Note from Greg:
  Ok... further tests indicate that I had an issue w/my implementation.
  Essentially, I am writing a testcase to contribute which add's headers,
  checks headers, and modifies the soap body as part of doing this from a
  JAX-RPC handler.  It showed that my JAX-RPC intercepters are in the wrong
  spot on the server side.  They need to be moved so they run AFTER the pivot
  point.  Sending a header in the SOAP response was not possible.  I moved
  them to SOAPService and it works fine.
  
  Revision  Changes    Path
  1.76      +10 -26    xml-axis/java/src/org/apache/axis/providers/java/JavaProvider.java
  
  Index: JavaProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/providers/java/JavaProvider.java,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- JavaProvider.java	29 Aug 2002 21:02:39 -0000	1.75
  +++ JavaProvider.java	2 Sep 2002 00:13:21 -0000	1.76
  @@ -57,33 +57,28 @@
   
   import org.apache.axis.AxisEngine;
   import org.apache.axis.AxisFault;
  +import org.apache.axis.Constants;
   import org.apache.axis.Handler;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.components.logger.LogFactory;
  +import org.apache.axis.description.ServiceDesc;
  +import org.apache.axis.encoding.TypeMapping;
  +import org.apache.axis.enum.Scope;
  +import org.apache.axis.enum.Style;
  +import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.providers.BasicProvider;
  -import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.ClassUtils;
  -import org.apache.axis.utils.cache.JavaClass;
  +import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.cache.ClassCache;
  +import org.apache.axis.utils.cache.JavaClass;
   import org.apache.axis.wsdl.fromJava.Emitter;
  -import org.apache.axis.encoding.TypeMapping;
  -import org.apache.axis.enum.Style;
  -import org.apache.axis.enum.Scope;
  -import org.apache.axis.Constants;
  -import org.apache.axis.description.ServiceDesc;
  -import org.apache.axis.handlers.soap.SOAPService;
  -
  -import org.apache.axis.components.logger.LogFactory;
   import org.apache.commons.logging.Log;
  -
  -import org.apache.axis.handlers.HandlerChainImpl;
  -import org.apache.axis.handlers.HandlerInfoChainFactory;
  -
   import org.w3c.dom.Document;
   
  -import javax.xml.rpc.server.ServiceLifecycle;
   import javax.xml.rpc.holders.IntHolder;
  +import javax.xml.rpc.server.ServiceLifecycle;
   import java.net.URL;
   import java.util.ArrayList;
   import java.util.StringTokenizer;
  @@ -268,11 +263,6 @@
                   msgContext.setResponseMessage( resMsg );
               }
   
  -        HandlerInfoChainFactory handlerFactory = (HandlerInfoChainFactory) service.getOption(Constants.ATTR_HANDLERINFOCHAIN); 
  -        HandlerChainImpl handlerImpl = null;
  -        if (handlerFactory != null) handlerImpl = (HandlerChainImpl) handlerFactory.createHandlerChain(); 
  -            if (handlerImpl != null) handlerImpl.handleRequest(msgContext);
  -
               try {
                   processMessage(msgContext, reqEnv,
                                  resEnv, obj);
  @@ -286,12 +276,6 @@
                       ((ServiceLifecycle)obj).destroy();
                   }
               }
  -
  -            if ( handlerImpl != null) {
  -                handlerImpl.handleResponse(msgContext);
  -                handlerImpl.destroy();
  -            }
  -
           }
           catch( Exception exp ) {
               entLog.debug( JavaUtils.getMessage("toAxisFault00"), exp);
  
  
  
  1.79      +17 -1     xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java
  
  Index: SOAPService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java,v
  retrieving revision 1.78
  retrieving revision 1.79
  diff -u -r1.78 -r1.79
  --- SOAPService.java	25 Aug 2002 14:00:02 -0000	1.78
  +++ SOAPService.java	2 Sep 2002 00:13:21 -0000	1.79
  @@ -61,12 +61,14 @@
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
   import org.apache.axis.SimpleTargetedChain;
  +import org.apache.axis.attachments.Attachments;
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.axis.description.ServiceDesc;
   import org.apache.axis.encoding.TypeMappingRegistry;
   import org.apache.axis.enum.Style;
  -import org.apache.axis.attachments.Attachments;
   import org.apache.axis.handlers.BasicHandler;
  +import org.apache.axis.handlers.HandlerChainImpl;
  +import org.apache.axis.handlers.HandlerInfoChainFactory;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPHeaderElement;
   import org.apache.axis.providers.BasicProvider;
  @@ -419,4 +421,18 @@
       public void setSendType(int sendType) {
           this.sendType = sendType;
       }
  +
  +	public void invoke(MessageContext msgContext) throws AxisFault {
  +		HandlerInfoChainFactory handlerFactory = (HandlerInfoChainFactory) this.getOption(Constants.ATTR_HANDLERINFOCHAIN);
  +		HandlerChainImpl handlerImpl = null;
  +		if (handlerFactory != null) handlerImpl = (HandlerChainImpl) handlerFactory.createHandlerChain();
  +		if (handlerImpl != null) handlerImpl.handleRequest(msgContext);
  +
  +		super.invoke(msgContext);
  +
  +		if ( handlerImpl != null) {
  +			handlerImpl.handleResponse(msgContext);
  +				handlerImpl.destroy();
  +		}
  +	}
   }