[jboss-dev-forums] [Design of POJO Server] - Re: AS 5 not reliably picking up changes in exploded EAR

jaikiran do-not-reply at jboss.com
Tue Apr 7 10:31:07 EDT 2009


"alesj" wrote : 
  | This is Wicket code, and it does what it does. :-)
  | I don't think we can do anything about it.
  | 
Yep, that's correct. I meant the code could be changed in the wicket/seam :)

"alesj" wrote : 
  | But that's not the point.
  | Any other code could do something at undeploy.
  | And since most of the app servers do temping by default it would work ootb.
  | 

So then the original question remains about 4.x:
anonymous wrote : 
  | How did we then handle resources lookup at undeploy (when the app was deleted)?
  | I guess we didn't. :-)

I decided to give this a try with a simple WAR which has a ServletContextListener which on contextDestroyed, looks up a properties file within the WAR:

public class MyServletContextListener implements ServletContextListener {
  | 
  | 	public void contextDestroyed(ServletContextEvent event) {
  | 		System.out.println("Destroying " + event.getServletContext());
  | 		ServletContext servletCtx = event.getServletContext();
  | 		InputStream inputStream = servletCtx.getResourceAsStream("test.properties");
  | 		System.out.println("Got stream while destroying " + inputStream);
  | 		Properties props = new Properties();
  | 		try {
  | 			props.load(inputStream);
  | 			System.out.println("Loaded props");
  | 		} catch (Exception e)
  | 		{
  | 			System.out.println("Error loading props");
  | 			e.printStackTrace();
  | 		}
  | 		
  | 	}
  | 

Here are the results on AS-4.2.3 GA:

When the WAR is deployed in archived format, and i delete it from the deploy folder when the server is up, i see that the ServletContextListener is able to still lookup the test.properties file (since the archived deployments are temp'd):

19:48:57,038 INFO  [STDOUT] Destroying org.apache.catalina.core.ApplicationContextFacade at 6e056e
  | 19:48:57,038 INFO  [STDOUT] Got stream while destroying java.io.ByteArrayInputStream at a3bb2e
  | 19:48:57,038 INFO  [STDOUT] Loaded props
  | 

When the WAR is deployed in exploded format and i delete it from the deploy folder, the ServletContextListener is not able to lookup that test.properties file (since the exploded deployment are not temp'd and original file is gone):

  | 19:47:26,638 INFO  [STDOUT] Destroying org.apache.catalina.core.ApplicationContextFacade at b2771
  | 19:47:26,639 INFO  [STDOUT] Got stream while destroying null
  | 19:47:26,639 INFO  [STDOUT] Error loading props
  | 19:47:26,639 ERROR [STDERR] java.lang.NullPointerException
  | 19:47:26,641 ERROR [STDERR]     at java.util.Properties$LineReader.readLine(Properties.java:365)
  | 19:47:26,641 ERROR [STDERR]     at java.util.Properties.load(Properties.java:293)
  | 19:47:26,641 ERROR [STDERR]     at org.myapp.servlet.MyServletContextListener.contextDestroyed(MyServletContextListener.java:26)
  | 19:47:26,641 ERROR [STDERR]     at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3895)
  | 19:47:26,641 ERROR [STDERR]     at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4527)
  | 19:47:26,641 ERROR [STDERR]     at org.apache.catalina.core.ContainerBase.destroy(ContainerBase.java:1163)
  | 19:47:26,642 ERROR [STDERR]     at org.apache.catalina.core.StandardContext.destroy(StandardContext.java:4617)
  | 19:47:26,642 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 19:47:26,642 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 19:47:26,642 ERROR [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 19:47:26,642 ERROR [STDERR]     at java.lang.reflect.Method.invoke(Method.java:585)
  | 19:47:26,642 ERROR [STDERR]     at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296)
  | 19:47:26,643 ERROR [STDERR]     at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
  | 19:47:26,643 ERROR [STDERR]     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  | 19:47:26,643 ERROR [STDERR]     at org.jboss.web.tomcat.service.TomcatDeployer.performUndeployInternal(TomcatDeployer.java:461)
  | 19:47:26,643 ERROR [STDERR]     at org.jboss.web.tomcat.service.TomcatDeployer.performUndeploy(TomcatDeployer.java:432)
  | 19:47:26,643 ERROR [STDERR]     at org.jboss.web.AbstractWebDeployer.stop(AbstractWebDeployer.java:422)
  | 19:47:26,643 ERROR [STDERR]     at org.jboss.web.WebModule.stopModule(WebModule.java:100)
  | 19:47:26,643 ERROR [STDERR]     at org.jboss.web.WebModule.stopService(WebModule.java:66)
  | 19:47:26,644 ERROR [STDERR]     at org.jboss.system.ServiceMBeanSupport.jbossInternalStop(ServiceMBeanSupport.java:315)
  | 19:47:26,644 ERROR [STDERR]     at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:247)
  | 19:47:26,644 ERROR [STDERR]     at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
  | 19:47:26,644 ERROR [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 19:47:26,644 ERROR [STDERR]     at java.lang.reflect.Method.invoke(Method.java:585)
  | 19:47:26,644 ERROR [STDERR]     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  | 19:47:26,645 ERROR [STDERR]     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  | 19:47:26,645 ERROR [STDERR]     at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
  | 19:47:26,645 ERROR [STDERR]     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  | 19:47:26,645 ERROR [STDERR]     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  | 19:47:26,645 ERROR [STDERR]     at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
  | 19:47:26,645 ERROR [STDERR]     at $Proxy0.stop(Unknown Source)
  | 19:47:26,645 ERROR [STDERR]     at org.jboss.system.ServiceController.stop(ServiceController.java:508)
  | 19:47:26,646 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 19:47:26,646 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 19:47:26,646 ERROR [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 19:47:26,646 ERROR [STDERR]     at java.lang.reflect.Method.invoke(Method.java:585)
  | 19:47:26,646 ERROR [STDERR]     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  | 19:47:26,646 ERROR [STDERR]     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  | 19:47:26,647 ERROR [STDERR]     at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
  | 19:47:26,647 ERROR [STDERR]     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  | 19:47:26,647 ERROR [STDERR]     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  | 19:47:26,647 ERROR [STDERR]     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
  | 19:47:26,647 ERROR [STDERR]     at $Proxy44.stop(Unknown Source)
  | 19:47:26,647 ERROR [STDERR]     at org.jboss.web.AbstractWebContainer.stop(AbstractWebContainer.java:498)
  | 19:47:26,647 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 19:47:26,648 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 19:47:26,648 ERROR [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 19:47:26,648 ERROR [STDERR]     at java.lang.reflect.Method.invoke(Method.java:585)
  | 19:47:26,648 ERROR [STDERR]     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  | 19:47:26,648 ERROR [STDERR]     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  | 19:47:26,648 ERROR [STDERR]     at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
  | 19:47:26,649 ERROR [STDERR]     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  | 19:47:26,649 ERROR [STDERR]     at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
  | 19:47:26,649 ERROR [STDERR]     at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97)
  | 19:47:26,649 ERROR [STDERR]     at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238)
  | 19:47:26,649 ERROR [STDERR]     at org.jboss.wsf.container.jboss42.DeployerInterceptor.stop(DeployerInterceptor.java:98)
  | 19:47:26,649 ERROR [STDERR]     at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.stop(SubDeployerInterceptorSupport.java:196)
  | 19:47:26,649 ERROR [STDERR]     at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:99)
  | 19:47:26,650 ERROR [STDERR]     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  | 19:47:26,650 ERROR [STDERR]     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  | 19:47:26,650 ERROR [STDERR]     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  | 19:47:26,650 ERROR [STDERR]     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
  | 19:47:26,650 ERROR [STDERR]     at $Proxy45.stop(Unknown Source)
  | 19:47:26,650 ERROR [STDERR]     at org.jboss.deployment.MainDeployer.stop(MainDeployer.java:667)
  | 19:47:26,650 ERROR [STDERR]     at org.jboss.deployment.MainDeployer.undeploy(MainDeployer.java:638)
  | 19:47:26,651 ERROR [STDERR]     at org.jboss.deployment.MainDeployer.undeploy(MainDeployer.java:632)
  | 19:47:26,651 ERROR [STDERR]     at org.jboss.deployment.MainDeployer.undeploy(MainDeployer.java:615)
  | 19:47:26,651 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 19:47:26,651 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 19:47:26,651 ERROR [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 19:47:26,651 ERROR [STDERR]     at java.lang.reflect.Method.invoke(Method.java:585)
  | 19:47:26,652 ERROR [STDERR]     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  | 19:47:26,652 ERROR [STDERR]     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  | 19:47:26,652 ERROR [STDERR]     at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
  | 19:47:26,652 ERROR [STDERR]     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  | 19:47:26,652 ERROR [STDERR]     at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
  | 19:47:26,652 ERROR [STDERR]     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  | 19:47:26,652 ERROR [STDERR]     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  | 19:47:26,653 ERROR [STDERR]     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  | 19:47:26,653 ERROR [STDERR]     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
  | 19:47:26,653 ERROR [STDERR]     at $Proxy9.undeploy(Unknown Source)
  | 19:47:26,653 ERROR [STDERR]     at org.jboss.deployment.scanner.URLDeploymentScanner.undeploy(URLDeploymentScanner.java:450)
  | 19:47:26,653 ERROR [STDERR]     at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:570)
  | 19:47:26,653 ERROR [STDERR]     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
  | 19:47:26,653 ERROR [STDERR]     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
  | 19:47:26,654 ERROR [STDERR]     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
  |  

So that answers the question - we did not support this even in 4.x with exploded deployments.

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4224070#4224070

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4224070



More information about the jboss-dev-forums mailing list