Author: thomas.diesler(a)jboss.com
Date: 2007-05-13 00:55:04 -0400 (Sun, 13 May 2007)
New Revision: 3074
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/deployment/ServiceEndpointPublisher.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/deployment/UnifiedMetaDataAssociationDeployer.java
trunk/jbossws-core/src/test/resources/jaxrpc/jbws124/WEB-INF/web.xml
trunk/jbws-jboss42/src/main/java/org/jboss/ws/integration/jboss42/jbossws/JAXRPCDeployerHookJSE.java
trunk/jbws-jboss42/src/main/java/org/jboss/ws/integration/jboss42/jbossws/ModifyWebMetaDataDeployer.java
Log:
Fix JBWS-124
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/deployment/ServiceEndpointPublisher.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/deployment/ServiceEndpointPublisher.java 2007-05-13
03:54:15 UTC (rev 3073)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/deployment/ServiceEndpointPublisher.java 2007-05-13
04:55:04 UTC (rev 3074)
@@ -63,7 +63,7 @@
{
// The URL to the rewrittn web.xml
public URL webXML;
- // Map<servlet-name, servlet-class> the servlet-class enties are the
implementation beans
+ // Maps the servlet name to the target bean
public Map<String, String> sepTargetMap = new HashMap<String,
String>();
}
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/deployment/UnifiedMetaDataAssociationDeployer.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/deployment/UnifiedMetaDataAssociationDeployer.java 2007-05-13
03:54:15 UTC (rev 3073)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/deployment/UnifiedMetaDataAssociationDeployer.java 2007-05-13
04:55:04 UTC (rev 3074)
@@ -54,8 +54,11 @@
if (sepMetaData == null)
{
sepMetaData = getEndpointMetaData(umd, ep.getName());
- sepMetaData.setServiceEndpointImplName(ep.getEndpointImpl().getName());
ep.addMetaData(ServerEndpointMetaData.class, sepMetaData);
+
+ Class targetBean = ep.getEndpointImpl();
+ if (targetBean != null)
+ sepMetaData.setServiceEndpointImplName(targetBean.getName());
}
}
}
Modified: trunk/jbossws-core/src/test/resources/jaxrpc/jbws124/WEB-INF/web.xml
===================================================================
--- trunk/jbossws-core/src/test/resources/jaxrpc/jbws124/WEB-INF/web.xml 2007-05-13
03:54:15 UTC (rev 3073)
+++ trunk/jbossws-core/src/test/resources/jaxrpc/jbws124/WEB-INF/web.xml 2007-05-13
04:55:04 UTC (rev 3074)
@@ -8,9 +8,9 @@
<!-- Test that we can deploy an already modified web.xml -->
<servlet>
<servlet-name>Hello</servlet-name>
-
<servlet-class>org.jboss.ws.integration.jboss42.JBossServiceEndpointServlet</servlet-class>
+
<servlet-class>org.jboss.ws.core.server.ServiceEndpointServlet</servlet-class>
<init-param>
- <param-name>ServiceEndpointImpl</param-name>
+ <param-name>jboss.ws.endpoint</param-name>
<param-value>org.jboss.test.ws.jaxrpc.jbws124.HelloJavaBean</param-value>
</init-param>
</servlet>
Modified:
trunk/jbws-jboss42/src/main/java/org/jboss/ws/integration/jboss42/jbossws/JAXRPCDeployerHookJSE.java
===================================================================
---
trunk/jbws-jboss42/src/main/java/org/jboss/ws/integration/jboss42/jbossws/JAXRPCDeployerHookJSE.java 2007-05-13
03:54:15 UTC (rev 3073)
+++
trunk/jbws-jboss42/src/main/java/org/jboss/ws/integration/jboss42/jbossws/JAXRPCDeployerHookJSE.java 2007-05-13
04:55:04 UTC (rev 3074)
@@ -29,11 +29,11 @@
import org.jboss.deployment.DeploymentInfo;
import org.jboss.metadata.WebMetaData;
+import org.jboss.ws.integration.BasicEndpoint;
import org.jboss.ws.integration.Endpoint;
-import org.jboss.ws.integration.BasicEndpoint;
import org.jboss.ws.integration.Service;
+import org.jboss.ws.integration.deployment.BasicDeploymentImpl;
import org.jboss.ws.integration.deployment.Deployment;
-import org.jboss.ws.integration.deployment.BasicDeploymentImpl;
import org.jboss.ws.integration.deployment.Deployment.DeploymentType;
import org.jboss.ws.metadata.webservices.PortComponentMetaData;
import org.jboss.ws.metadata.webservices.WebserviceDescriptionMetaData;
@@ -92,8 +92,14 @@
try
{
- ClassLoader loader = unit.annotationsCl;
+ ClassLoader loader = dep.getClassLoader();
Class<?> epBean = loader.loadClass(servletClass.trim());
+
+ // If this is a servlet we defer the the bean creation
+ if (javax.servlet.Servlet.class.isAssignableFrom(epBean))
+ {
+ epBean = null;
+ }
// Create the endpoint
Endpoint endpoint = new BasicEndpoint(service, epBean);
Modified:
trunk/jbws-jboss42/src/main/java/org/jboss/ws/integration/jboss42/jbossws/ModifyWebMetaDataDeployer.java
===================================================================
---
trunk/jbws-jboss42/src/main/java/org/jboss/ws/integration/jboss42/jbossws/ModifyWebMetaDataDeployer.java 2007-05-13
03:54:15 UTC (rev 3073)
+++
trunk/jbws-jboss42/src/main/java/org/jboss/ws/integration/jboss42/jbossws/ModifyWebMetaDataDeployer.java 2007-05-13
04:55:04 UTC (rev 3074)
@@ -24,9 +24,12 @@
//$Id$
import org.jboss.ws.core.deployment.ServiceEndpointPublisher;
+import org.jboss.ws.core.deployment.ServiceEndpointPublisher.RewriteResults;
+import org.jboss.ws.integration.Endpoint;
import org.jboss.ws.integration.deployment.AbstractDeployer;
import org.jboss.ws.integration.deployment.Deployment;
import org.jboss.ws.integration.deployment.UnifiedDeploymentInfo;
+import org.jboss.ws.metadata.umdm.ServerEndpointMetaData;
/**
* A deployer that modifies the web.xml meta data
@@ -49,6 +52,34 @@
if (udi == null)
throw new IllegalStateException("Cannot obtain unified deployement
info");
- serviceEndpointPublisher.rewriteWebXml(udi);
+ RewriteResults results = serviceEndpointPublisher.rewriteWebXml(udi);
+
+ // The endpoint may not have a target bean when
+ // <servlet-class> originally contained a javax.servlet.Servlet
+ for (Endpoint ep : dep.getService().getEndpoints())
+ {
+ if (ep.getEndpointImpl() == null)
+ {
+ String servletName =
ep.getName().getKeyProperty(Endpoint.SEPID_PROPERTY_ENDPOINT);
+ String beanName = results.sepTargetMap.get(servletName);
+ if (beanName == null)
+ throw new IllegalStateException("Cannot obtain target bean for:
" + servletName);
+
+ try
+ {
+ ClassLoader loader = dep.getClassLoader();
+ Class<?> epBean = loader.loadClass(beanName);
+ ep.setEndpointImpl(epBean);
+
+ ServerEndpointMetaData sepMetaData =
ep.getMetaData(ServerEndpointMetaData.class);
+ sepMetaData.setServiceEndpointImplName(beanName);
+ }
+ catch (ClassNotFoundException ex)
+ {
+ log.warn("Cannot load target bean: " + beanName);
+ }
+
+ }
+ }
}
}
\ No newline at end of file
Show replies by date