You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by ru...@apache.org on 2001/05/02 15:34:15 UTC

cvs commit: xml-soap/java/src/org/apache/soap/server/http MessageRouterServlet.java RPCRouterServlet.java ServerHTTPUtils.java

rubys       01/05/02 06:34:15

  Modified:    java/src/org/apache/soap/providers MsgJavaProvider.java
                        RPCJavaProvider.java StatefulEJBProvider.java
               java/src/org/apache/soap/rpc SOAPContext.java
               java/src/org/apache/soap/server DeploymentDescriptor.java
                        ServerUtils.java ServiceManager.java
               java/src/org/apache/soap/server/http
                        MessageRouterServlet.java RPCRouterServlet.java
                        ServerHTTPUtils.java
  Log:
  Remove client side dependencies on servlet.jar
  
  Revision  Changes    Path
  1.2       +1 -0      xml-soap/java/src/org/apache/soap/providers/MsgJavaProvider.java
  
  Index: MsgJavaProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/providers/MsgJavaProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MsgJavaProvider.java	2001/01/16 14:26:40	1.1
  +++ MsgJavaProvider.java	2001/05/02 13:34:11	1.2
  @@ -113,6 +113,7 @@
         targetObject = ServerHTTPUtils.getTargetObject(serviceManager,
                                                        dd, targetObjectURI,
                                                        servlet, session,
  +                                                     reqContext,
                                                        context);
       };
   
  
  
  
  1.4       +1 -0      xml-soap/java/src/org/apache/soap/providers/RPCJavaProvider.java
  
  Index: RPCJavaProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/providers/RPCJavaProvider.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- RPCJavaProvider.java	2001/04/10 13:28:14	1.3
  +++ RPCJavaProvider.java	2001/05/02 13:34:11	1.4
  @@ -117,6 +117,7 @@
         targetObject = ServerHTTPUtils.getTargetObject (serviceManager,
                                                         dd, targetObjectURI,
                                                         servlet, session,
  +                                                      reqContext,
                                                         context);
       };
   
  
  
  
  1.6       +1 -1      xml-soap/java/src/org/apache/soap/providers/StatefulEJBProvider.java
  
  Index: StatefulEJBProvider.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/providers/StatefulEJBProvider.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StatefulEJBProvider.java	2001/04/07 01:46:49	1.5
  +++ StatefulEJBProvider.java	2001/05/02 13:34:11	1.6
  @@ -292,7 +292,7 @@
   
         } catch (Exception e) {
           throw new SOAPException(Constants.FAULT_CODE_SERVER,
  -                                "Error in connecting to EJB", e);
  +                                "Error in connecting to EJB"+ e.toString());
         }
       }
     }
  
  
  
  1.5       +15 -1     xml-soap/java/src/org/apache/soap/rpc/SOAPContext.java
  
  Index: SOAPContext.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/rpc/SOAPContext.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SOAPContext.java	2001/01/16 14:26:41	1.4
  +++ SOAPContext.java	2001/05/02 13:34:12	1.5
  @@ -78,7 +78,8 @@
    */
   public class SOAPContext {
       protected MimeMultipart parts;
  -    protected Hashtable     bag  = new Hashtable();
  +    protected Hashtable     bag    = new Hashtable();
  +    protected ClassLoader   loader = null ;
   
       /**
        * This flag indicates if setRootPart() was called, so we can distinguish
  @@ -540,6 +541,19 @@
        */
       public Enumeration getPropertyNames() {
         return( bag.keys() );
  +    }
  +
  +    public void setClassLoader(ClassLoader cl) {
  +    }
  +
  +    public ClassLoader getClassLoader() {
  +      return loader ;
  +    }
  +
  +    public Class loadClass(String className) throws ClassNotFoundException {
  +      if ( loader == null )
  +        return( Class.forName( className ) );
  +      return( Class.forName( className, true, loader ) );
       }
   
       /**
  
  
  
  1.26      +8 -23     xml-soap/java/src/org/apache/soap/server/DeploymentDescriptor.java
  
  Index: DeploymentDescriptor.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/DeploymentDescriptor.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- DeploymentDescriptor.java	2001/04/02 19:42:13	1.25
  +++ DeploymentDescriptor.java	2001/05/02 13:34:13	1.26
  @@ -59,7 +59,6 @@
   
   import java.io.*;
   import java.util.*;
  -import javax.servlet.*;
   import javax.xml.parsers.*;
   import org.w3c.dom.*;
   import org.xml.sax.*;
  @@ -107,7 +106,7 @@
     transient SOAPMappingRegistry cachedSMR;
     protected String[] faultListener;
     private transient SOAPFaultRouter fr;
  -  
  +
     // Should I throw a mustUnderstand fault if I get
     // any mustUnderstand headers?  If you deploy a
     // service that doesn't process headers at all,
  @@ -295,7 +294,7 @@
     public void setFaultListener(String[] _faultListener) {faultListener = _faultListener;}
   
   
  -  public SOAPFaultRouter buildFaultRouter(ServletContext context) {
  +  public SOAPFaultRouter buildFaultRouter(SOAPContext ctxt) {
           if (fr != null) return fr;
   
           fr = new SOAPFaultRouter();
  @@ -306,9 +305,7 @@
           SOAPFaultListener[] lis = new SOAPFaultListener[faultListener.length];
           try {
             for (int i = 0; i < faultListener.length; i++) {
  -            Class c =
  -              ServerHTTPUtils.getClassFromNameAndContext(faultListener[i],
  -                                                         context);
  +            Class c = ctxt.loadClass( faultListener[i] );
               lis[i] = (SOAPFaultListener)c.newInstance();
             }
           }
  @@ -744,13 +741,7 @@
         buildSOAPMappingRegistry (DeploymentDescriptor dd, SOAPContext ctx) {
       TypeMapping[] maps = dd.getMappings ();
       SOAPMappingRegistry smr = dd.getCachedSMR ();
  -    Servlet servlet = (Servlet)ctx.getProperty(Constants.BAG_HTTPSERVLET);
  -    ServletContext context = null;
   
  -    if (servlet != null) {
  -      context = servlet.getServletConfig().getServletContext();
  -    }
  -
       if (smr != null) {
         return smr;
       } else {
  @@ -758,9 +749,7 @@
   
         if (defaultSMRClassName != null) {
           try {
  -          Class defaultSMRClass =
  -            ServerHTTPUtils.getClassFromNameAndContext(defaultSMRClassName,
  -                                                       context);
  +          Class defaultSMRClass = ctx.loadClass( defaultSMRClassName );
   
             smr = (SOAPMappingRegistry)defaultSMRClass.newInstance();
           }
  @@ -779,22 +768,18 @@
           try {
             step = 0;
             Class javaType = null;
  -          if (tm.javaType != null) {
  -            javaType = ServerHTTPUtils.getClassFromNameAndContext(tm.javaType,
  -                                                                  context);
  -          }
  +          if (tm.javaType != null) 
  +            javaType = ctx.loadClass( tm.javaType );
             step = 1;
             Serializer s = null;
             if (tm.java2XMLClassName != null) {
  -            Class c = ServerHTTPUtils.getClassFromNameAndContext(tm.java2XMLClassName,
  -                                                                 context);
  +            Class c = ctx.loadClass( tm.java2XMLClassName );
               s = (Serializer) c.newInstance ();
             }
             step = 2;
             Deserializer d = null;
             if (tm.xml2JavaClassName != null) {
  -            Class c = ServerHTTPUtils.getClassFromNameAndContext(tm.xml2JavaClassName,
  -                                                                 context);
  +            Class c = ctx.loadClass( tm.xml2JavaClassName );
               d = (Deserializer) c.newInstance ();
             }
             smr.mapTypes (tm.encodingStyle, tm.elementType, javaType, s, d);
  
  
  
  1.9       +2 -2      xml-soap/java/src/org/apache/soap/server/ServerUtils.java
  
  Index: ServerUtils.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/ServerUtils.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ServerUtils.java	2001/03/23 07:46:33	1.8
  +++ ServerUtils.java	2001/05/02 13:34:13	1.9
  @@ -122,7 +122,7 @@
       }
   
       public static Provider loadProvider(DeploymentDescriptor dd,
  -                                        ServletContext context)
  +                                        SOAPContext ctxt)
                                             throws SOAPException {
           String  className ;
           Class   c ;
  @@ -138,7 +138,7 @@
               className = "org.apache.soap.providers.RPCJavaProvider";
   
           try {
  -          c = ServerHTTPUtils.getClassFromNameAndContext(className, context);
  +          c = ctxt.loadClass( className );
             newObj = c.newInstance();
           } catch(Exception exp) {
               throw new SOAPException(Constants.FAULT_CODE_SERVER,
  
  
  
  1.14      +12 -2     xml-soap/java/src/org/apache/soap/server/ServiceManager.java
  
  Index: ServiceManager.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/ServiceManager.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ServiceManager.java	2001/03/23 07:46:33	1.13
  +++ ServiceManager.java	2001/05/02 13:34:13	1.14
  @@ -65,6 +65,7 @@
   import org.apache.soap.server.http.*;
   import org.apache.soap.util.* ;
   import org.apache.soap.util.xml.*;
  +import org.apache.soap.rpc.SOAPContext ;
   import org.w3c.dom.*;
   import org.xml.sax.*;
   
  @@ -159,8 +160,17 @@
           name = elem.getTagName();
           if ( name.equals( "configManager" ) ) {
             String className = elem.getAttribute( "value" );
  -          Class  c = ServerHTTPUtils.getClassFromNameAndContext(className,
  -                                                                context);
  +
  +          ClassLoader cl = null ;
  +          Class       c  = null ;
  +          
  +          cl = ServerHTTPUtils.getServletClassLoaderFromContext(context);
  +
  +          if ( cl == null )
  +            c = Class.forName( className );
  +          else
  +            c = Class.forName( className, true, cl );
  +
             configMgr = (ConfigManager) c.newInstance();
             if ( !(configMgr instanceof ConfigManager) )
               throw new Exception( "Class " + className + " isn't a " +
  
  
  
  1.22      +5 -2      xml-soap/java/src/org/apache/soap/server/http/MessageRouterServlet.java
  
  Index: MessageRouterServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/http/MessageRouterServlet.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- MessageRouterServlet.java	2001/03/23 07:46:34	1.21
  +++ MessageRouterServlet.java	2001/05/02 13:34:14	1.22
  @@ -195,6 +195,9 @@
       SOAPContext reqCtx = new SOAPContext() ;
       SOAPContext resCtx = new SOAPContext() ;
   
  +    reqCtx.setClassLoader( ServerHTTPUtils.
  +                             getServletClassLoaderFromContext(context) );
  +
       try {
         try {
           reqCtx.setProperty( Constants.BAG_HTTPSERVLET, this );
  @@ -238,7 +241,7 @@
           } else if (dd.getProviderType() ==
                      DeploymentDescriptor.PROVIDER_USER_DEFINED) {
             // Handle user-defined providers
  -          provider = ServerUtils.loadProvider(dd, context);
  +          provider = ServerUtils.loadProvider(dd, reqCtx);
           } else {
             // Handle scripts
             provider = new org.apache.soap.providers.MsgJavaProvider();
  @@ -271,7 +274,7 @@
           Fault fault = new Fault (e);
           fault.setFaultActorURI (req.getRequestURI ());
           if (dd != null)
  -          dd.buildFaultRouter(context).notifyListeners(fault, e);
  +          dd.buildFaultRouter(reqCtx).notifyListeners(fault, e);
     
           // the status code for faults should always be the internal
           // server error status code (per soap spec)
  
  
  
  1.26      +5 -2      xml-soap/java/src/org/apache/soap/server/http/RPCRouterServlet.java
  
  Index: RPCRouterServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/http/RPCRouterServlet.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- RPCRouterServlet.java	2001/03/23 07:46:35	1.25
  +++ RPCRouterServlet.java	2001/05/02 13:34:14	1.26
  @@ -203,6 +203,9 @@
       SOAPContext resCtx = new SOAPContext();
       Envelope    callEnv = null ;
   
  +    reqCtx.setClassLoader( ServerHTTPUtils.
  +                             getServletClassLoaderFromContext(context) );
  +
       try { // unrecoverable error
         try { // SOAPException
           // extract the call
  @@ -253,7 +256,7 @@
           } else if (dd.getProviderType() ==
                      DeploymentDescriptor.PROVIDER_USER_DEFINED) {
             // Handle user-defined providers
  -          provider = ServerUtils.loadProvider(dd, context);
  +          provider = ServerUtils.loadProvider(dd, reqCtx);
           } else {
             // Handle scripts
             provider = new org.apache.soap.providers.RPCJavaProvider();
  @@ -278,7 +281,7 @@
           Fault fault = new Fault (e);
           fault.setFaultActorURI (req.getRequestURI ());
           if (dd != null)
  -          dd.buildFaultRouter(context).notifyListeners(fault, e);
  +          dd.buildFaultRouter(reqCtx).notifyListeners(fault, e);
     
           // the status code for faults should always be the internal
           // server error status code (per soap spec)
  
  
  
  1.19      +3 -21     xml-soap/java/src/org/apache/soap/server/http/ServerHTTPUtils.java
  
  Index: ServerHTTPUtils.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/http/ServerHTTPUtils.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- ServerHTTPUtils.java	2001/04/10 13:28:14	1.18
  +++ ServerHTTPUtils.java	2001/05/02 13:34:14	1.19
  @@ -146,25 +146,6 @@
     }
   
     /**
  -   * Loads the class using the ClassLoader registered in the context, unless
  -   * none is registered, in which case the current ClassLoader is used.
  -   */
  -  public static Class getClassFromNameAndContext(String className,
  -                                                 ServletContext context)
  -                                                throws ClassNotFoundException {
  -    ClassLoader cl = null;
  -    Class c = null;
  -
  -    if ((cl = getServletClassLoaderFromContext(context)) != null) {
  -      c = Class.forName(className, true, cl);
  -    } else {
  -      c = Class.forName(className);
  -    }
  -
  -    return c;
  -  }
  -
  -  /**
      * If the fileName is absolute, a file representing it is returned.
      * Otherwise, a File is returned which represents the file relative
      * to the servlet's docBase. If ServletContext.getRealPath(fileName)
  @@ -239,6 +220,7 @@
                                    String targetID,
                                    HttpServlet thisServlet,
                                    HttpSession session,
  +                                 SOAPContext ctxt,
                                    ServletContext context)
          throws SOAPException {
       int scope = dd.getScope ();
  @@ -289,7 +271,7 @@
           }
           if (targetObject == null) {
             try {
  -            Class c = getClassFromNameAndContext(className, context);
  +            Class c = ctxt.loadClass(className);
   
               if (dd.getIsStatic ()) {
                 targetObject = c;
  @@ -331,7 +313,7 @@
         // this way via reflection to avoid a static dependency on BSF)
         Class bc = null;
         try {
  -        bc = getClassFromNameAndContext(SCRIPT_INVOKER, context);
  +        bc = ctxt.loadClass(SCRIPT_INVOKER);
         } catch (Exception e) {
           String msg = "Unable to load BSF invoker (" + SCRIPT_INVOKER + ")" +
             ": script services not available without BSF: " + e.getMessage ();