I am trying to determine the best strategy for packaging up and deploying code for my
environment. I'm running JBoss 5.1 in windows, linux and solaris, using JDK1.6.x both
32 bit and 64 bit.
I have about 15-20 "third party" jars (like apache commons stuff), 5-10 custom
developed jars (services, pojos and such) , and about 40 different webapps that, at some
level, rely on the third party jars and our custom jars. Ideally, I would like to be able
to deploy/redeploy each the webapps independently without causing a reload of all 40
webapps. I've done quite a bit of prototyping and searching and can't really find
a good approach. My current set up is a single ear for the third party jars and a single
ear for my custom jars. I had a requirement that both ears were able to see classes in
each other and I've found that I can do that by by adding something like
| <loader-repository>
| com.mycorp:loader=MyLoader
| </loader-repository>
|
to the jboss-app.xml for each ear.
I experimented a bit with embedding each webapp into its own ear with the same
load-repository setting. That mostly worked, except if I redeployed my custom or third
party .ear. Redeploying those ears gave me different varieties of this exception:
| org.apache.jasper.JasperException: java.lang.IllegalStateException:
BaseClassLoader@2a81df82{vfsfile:/app/jboss-5.1.0.GA/server/local/deploy/local/local.ear/}
classLoader is not connected to a domain (probably undeployed?) for class
java.io.PrintWriter
|
|
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
| org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:405)
| org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
| org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
| javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
| org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
|
| root cause
|
| java.lang.IllegalStateException:
BaseClassLoader@2a81df82{vfsfile:/app/jboss-5.1.0.GA/server/local/deploy/local/local.ear/}
classLoader is not connected to a domain (probably undeployed?) for class
java.io.PrintWriter
|
org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:793)
| org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:441)
| java.lang.ClassLoader.loadClass(ClassLoader.java:252)
| java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
|
org.apache.commons.lang.exception.NestableDelegate.printStackTrace(NestableDelegate.java:292)
|
org.apache.commons.lang.exception.NestableDelegate.printStackTrace(NestableDelegate.java:280)
|
org.apache.commons.lang.exception.NestableRuntimeException.printStackTrace(NestableRuntimeException.java:179)
| org.apache.jsp.index_jsp._jspService(index_jsp.java:83)
| org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
| javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
| org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
| org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
| org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
| javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
| org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
|
Does anyone have any recommendations for how to achieve my basic goal of being able to hot
deploy web apps and ears where the webapps are dependent on the ears? I wouldn't mind
a solution that triggered a redeploy of all the webapps if one of my core ears was
redeployed, but I want to avoid a redeploy of everything if I just change a single
webapp.
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4244702#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...