[jbossws-dev] [Design of JBoss Web Services] - Re: Dynamic Endpoint Deployment
richard.opalka@jboss.com
do-not-reply at jboss.com
Thu Feb 12 08:51:27 EST 2009
In this thread we're talking about the following part of the stack trace:
MainDeployerImpl.deploy(Deployment...) line: 445
DynamicEndpointDeploymentAspect.create(Deployment) line: 88
DeploymentAspectManagerImpl.deploy(Deployment) line: 115
DeploymentAspectHttpServer.publish(HttpContext, Endpoint) line: 91
EndpointImpl.publish(Object) line: 172
EndpointServlet.init(ServletConfig) line: 70
StandardWrapper.loadServlet() line: 1048
StandardWrapper.load() line: 950
StandardContext.loadOnStartup(Container[]) line: 4122
StandardContext.start() line: 4421
TomcatDeployment.performDeployInternal(WebApplication, String, String) line: 315
TomcatDeployment.performDeploy(WebApplication, String) line: 147
TomcatDeployment(AbstractWarDeployment).start(DeploymentUnit, JBossWebMetaData) line: 461
WebModule.startModule() line: 118
WebModule.start() line: 97
anonymous wrote :
| Hot-deploying the war seems to go through the deployer chain twice. Once, when it goes through usual hot-deployment (See Stack1 below), then it does something in the tomcat/service-layer, I guess to deploy the WS endpoint (See Stack2 below).
|
Correct, it goes through deployers chain twice. This is evident from the stack trace above ;)
anonymous wrote :
| Now the problem is that the first time it deploys this, it correctly includes a Module attachment with the deploymentunit which links the classloader to a scoped classloading domain called "vfszip:/Users/kabir/sourcecontrol/jbossas/Branch_5_0/testsuite/output/lib/jaxws-endpoint-servlet.war" (See variables1 below).
Correct because first walk through deployers chain is pure web app deployment (Servlet in war)
anonymous wrote :
| When it deploys the second time, it incorrectly includes a Module attachment with the deploymentunit linking the classloader to the main/non-scoped classloading domain called DefaultDomain.
We do construct "minimal Deployment" needed to pass the deployers chain programatically (because we're calling MainDeployer.deploy() from servlet code).
Regarding the classloading issue you're facing it's because
our DynamicEndpointDeploymentAspect puts
Servlet context classloader to the constructed "minimal Deployment".
anonymous wrote :
| Somehow the new deployment created internally needs to either include the original Module,
|
I don't know how to achieve that because web service endpoint is published from servlet and we do not have access to DeploymentUnit from it :(
anonymous wrote : or the correct classloading metadata to reuse the name "vfszip:/Users/kabir/sourcecontrol/jbossas/Branch_5_0/testsuite/output/lib/jaxws-endpoint-servlet.war".
|
How to achieve that if we don't have access to DeploymentUnit? Is it possible to construct it dynamically?
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4209503#4209503
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4209503
More information about the jbossws-dev
mailing list