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 ();