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 2007/06/17 04:19:16 UTC
svn commit: r548001 -
/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java
Author: dims
Date: Sat Jun 16 19:19:14 2007
New Revision: 548001
URL: http://svn.apache.org/viewvc?view=rev&rev=548001
Log:
Fix for AXIS2-2185 - Add 'Service Object Supplier' Support
Modified:
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java?view=diff&rev=548001&r1=548000&r2=548001
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java Sat Jun 16 19:19:14 2007
@@ -35,6 +35,10 @@
import org.apache.axis2.jaxws.server.endpoint.injection.impl.ResourceInjectionException;
import org.apache.axis2.jaxws.server.endpoint.lifecycle.EndpointLifecycleException;
import org.apache.axis2.jaxws.server.endpoint.lifecycle.EndpointLifecycleManager;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.Constants;
+import org.apache.axis2.util.Loader;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -109,7 +113,7 @@
return serviceimpl;
} else {
// create a new service impl class for that service
- serviceimpl = createServiceInstance(serviceImplClass);
+ serviceimpl = createServiceInstance(msgContext.getAxisService(), serviceImplClass);
this.endpointInstance = serviceimpl;
this.endpointClazz = serviceImplClass;
if (log.isDebugEnabled()) {
@@ -249,7 +253,7 @@
return false;
}
- private Object createServiceInstance(Class serviceImplClass) {
+ private Object createServiceInstance(AxisService service, Class serviceImplClass) {
if (log.isDebugEnabled()) {
log.debug("Creating new instance of service endpoint");
}
@@ -261,11 +265,31 @@
Object instance = null;
try {
+ // allow alternative definition of makeNewServiceObject
+ if (service != null && service.getParameter(Constants.SERVICE_OBJECT_SUPPLIER) != null) {
+ ClassLoader classLoader = service.getClassLoader();
+
+ Parameter serviceObjectParam =
+ service.getParameter(Constants.SERVICE_OBJECT_SUPPLIER);
+ Class serviceObjectMaker = Loader.loadClass(classLoader, ((String)
+ serviceObjectParam.getValue()).trim());
+
+ // Find static getServiceObject() method, call it if there
+ Method method = serviceObjectMaker.
+ getMethod("getServiceObject",
+ new Class[]{AxisService.class});
+ if (method != null) {
+ return method.invoke(serviceObjectMaker.newInstance(), new Object[]{service});
+ }
+ }
instance = serviceImplClass.newInstance();
} catch (IllegalAccessException e) {
throw ExceptionFactory.makeWebServiceException(Messages.getMessage(
"EndpointControllerErr6", serviceImplClass.getName()));
} catch (InstantiationException e) {
+ throw ExceptionFactory.makeWebServiceException(Messages.getMessage(
+ "EndpointControllerErr6", serviceImplClass.getName()));
+ } catch (Exception e) {
throw ExceptionFactory.makeWebServiceException(Messages.getMessage(
"EndpointControllerErr6", serviceImplClass.getName()));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org