Hello there I am using the Eclipse/WTP enviroment to develop with Tomcat and would like to get a greater understanding of some issues that crop up that lower the quality of development <-> testing cycle for web application developers.


Do you know of any JSR that covers _REMOTE_ web-app deployment, exporting of entire web-apps, updating of file/dirs within exploded web-apps (delta uploads during development on a remote server), web-app deployment control, web-app reconfiguration, server re-configuration, etc..., apart from the TC add-on package "admin" is there any other work you could advise me to go look at that goes someway to forfilling these requirements ?

Do you think such work should be integrated into the "admin" package ? My perception of the admin package is that it provides a HTML based interface to deployment function. Where as I'm thinking of a more grass roots level protocol (like Java Debug) that works over TCPIP, which is more a "developer support" package and runs entirely within the container (not as web-app itself).


Things I'd like to address (and experiment with) :


My first advise to ask is on a ThreadDeath issue within ContainerBackgroundProcessor, when this occurs the TC server no longer responds to any web requests, although it appears to be running and the warning message in the log indicates all should be well. The only way to recover is to restart TC, this was caused during a web-app automatic re-deploy. At the end of this email is the log output and stack trace.

Is it possible to get a log output emitted by TC for the event that occured for it to auto-redeploy ? From my understanding of the annoyances I see this area "the automatic re-deploy" mechanism is at the root of most problems. I'd like my development IDE to instruct TC when its editing the web-app runtime enviroment, so that the deploy part (of the automatic re-reploy) is delayed until my IDE has finished all its edits. My IDEs build process is often slower than the time it takes TC to detect, undeploy and redeploy, but My IDE is still updating the enviroment, so the re-deploy bounces again as another edit comes in. It is at these times I see all sorts of problems from the TC JVM crashing out to ThreadDeath errors. I believe this could be solved by being able to send TC an instruction that for Context "/foo" to disable the auto-deploy temporarly, then once building is complete to re-enable and start the deploy. Maybe this could be achieved locally with a simple file existance test (lockfile) but I'd really like to see a solution that works local and remotely.

I would also like to experiment with setting TC up to be able to switch between two exploded web-app trees for the same context. Think of this like double-buffering used on 2D/3D graphics. Updates are made to the one that is currently not deployed, TC is kept informed as to which files have changed and TC has complete control to be able to decide if this update can be merged into the currently running wbe-app or a re-deploy is necessary for the changes to be picked up. TC would also have control as to exactly when a particular change is merged if that helps maintain stability of the running development container. But for this to happen there needs to be an API to delta update an exploded web-app.

Do you have any problems or situations yourself you'd like to throw in that maybe relevant ?


Your thoughts ?

Darryl


DEBUG 03:13:15,020 (ApplicationLifecycleListener.java:contextDestroyed:36)  
-contextDestroyed on "foo"
INFO  03:13:15,024 (ApplicationLifecycleListener.java:contextDestroyed:43)  
-contextDestroyed on "foo" done!
25-Oct-2005 03:13:16 org.apache.catalina.session.PersistentManagerBase start
SEVERE: No Store configured, persistence disabled
INFO  03:13:16,813 (ApplicationLifecycleListener.java:contextInitialized:23)  
-contextInitialized on "foo"
25-Oct-2005 03:13:16 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped
already.  Could not load org.apache.log4j.spi.ThrowableInformation.  The
eventual following stack trace is caused by an error thrown for debugging
purposes as well as to attempt to terminate the thread which caused the
illegal access, and has no functional impact.
25-Oct-2005 03:13:24 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor 
processChildren
SEVERE: Exception invoking periodic operation: java.lang.ThreadDeath
      at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1221)
      at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181)
      at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
      at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:145)
      at org.apache.log4j.Category.forcedLog(Category.java:379)
      at org.apache.log4j.Category.log(Category.java:844)
      at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:193)
      at 
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3673)
      at 
org.apache.catalina.core.StandardContext.start(StandardContext.java:4104)
      at 
org.apache.catalina.core.StandardContext.reload(StandardContext.java:2930)
      at 
org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:403)
      at 
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1276)
      at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1568)
      at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1577)
      at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1577)
      at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1557)
      at java.lang.Thread.run(Thread.java:595)
25-Oct-2005 03:13:34 org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started
DEBUG 03:13:34,128 (ApplicationLifecycleListener.java:contextDestroyed:36)  
-contextDestroyed on "foo"
25-Oct-2005 03:13:34 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped
already.  Could not load org.apache.log4j.spi.ThrowableInformation.  The
eventual following stack trace is caused by an error thrown for debugging
purposes as well as to attempt to terminate the thread which caused the
illegal access, and has no functional impact.
25-Oct-2005 03:13:34 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor 
processChildren
SEVERE: Exception invoking periodic operation: java.lang.ThreadDeath
      at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1221)
      at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181)
      at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
      at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:145)
      at org.apache.log4j.Category.forcedLog(Category.java:379)
      at org.apache.log4j.Category.log(Category.java:844)
      at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:193)
      at 
org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3714)
      at 
org.apache.catalina.core.StandardContext.stop(StandardContext.java:4283)
      at 
org.apache.catalina.core.StandardContext.reload(StandardContext.java:2924)
      at 
org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:403)
      at 
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1276)
      at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1568)
      at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1577)
      at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1577)
      at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1557)
      at java.lang.Thread.run(Thread.java:595)

--
Darryl L. Miles



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to