[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