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#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...