PLEASE HELP! WAR's can't hot redeploy
siupetpet Jun 3, 2005 12:46 PMHello JBoss fellows,
I have followed the http://wiki.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration to setup class loading isolations for my WAR deployments, and now I have a separate class loader for each of my WAR's, classes with same package and class name won't conflict ones in different WAR's, just like the way I want it.
my web.xml looks like
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>ServletName</servlet-name> <servlet-class>ServletClass</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletName</servlet-name> <url-pattern>/servlet/ServletName</url-pattern> </servlet-mapping> </web-app>
and here's the simple jboss-web.xml for vhost and classloading config.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd"> <jboss-web> <virtual-host>www.domain.com</virtual-host> <context-root>/</context-root> <class-loading> <loader-repository>dot.com:loader=deployment1.war</loader-repository> </class-loading> </jboss-web>
So, it's class loading isolation without lib override. I don't have any libraries in the web-inf/lib dir anyways.
HERE IS THE PROBLEM:
When I hot redeploy by touch web.xml, I get this in the console:
09:30:47,210 INFO [HostConfig] restartContext() 09:30:47,210 INFO [Context] Reloading this Context has started 09:30:50,272 WARN [HostConfig] Error during context restart java.lang.NullPointerException at org.jboss.web.tomcat.tc5.WebCtxLoader.start(WebCtxLoader.java:109) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4231) at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3043) at org.apache.catalina.startup.HostConfig.restartContext(HostConfig.java:873) at org.apache.catalina.startup.HostConfig.checkContextLastModified(HostConfig.java:759) at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1085) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:327) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.StandardHost.backgroundProcess(StandardHost.java:800) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1619) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1628) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1608) at java.lang.Thread.run(Thread.java:595)
Now if i try to access any page or servlet from a browser in this war, nothing will come up, as the IE flag keeps waving forever. I do NOT get the "page cannot be displayed", or 400/500 http error codes.
I have to shutdown the entire JBoss in order for the WAR to be running again. I simply can't do this all the time as it brings down other working WAR's, and I am in the process of developing the failed-to-hot-redeploy WAR and need to constantly hot-redeploy. I can hot-redeploy if I remove classloading isolation by removing the entire <class-loading> tag in jboss-web.xml but I DO need to enable this feature......
Could some experienced JBoss gurus please point me to the right direction so I can hot-redeploy with classloading isolation?
My Platform info:
windows xp pro with sp2, jdk5, jboss 4.01 sp1 (zion)
Thank you all very much for reading my post, and have a wonderful day :)[/url]