> From: [email protected] [mailto:[email protected]] On Behalf Of
> Daniel Lopez
> Subject: Tomcat 5.5 embedded vs Tomcat 6.0.18 embedded
>
> when my other threads finish, the container simply exists
> without a trace.
The metaphysical implications of existing without a trace are rather
intriguing...
> I've seen a thread in the tomcat-dev list ("embedded tomcat 6" 14 Feb
> 2008) that seems to imply this is normal with Tomcat 6, but in Tomcat
> 5.5 this did not happen. Is this normal?
Looks like it. In Tomcat 5.5, there was a non-daemon thread for each
<Connector> named "http-<port>-Monitor"; this thread no longer exists in 6.0,
since the whole area appears to have been re-architected. There are no
non-daemon threads in Tomcat 6.0, other than the whatever thread gets the game
started; the normal Tomcat bootstrap uses this lead thread to listen on the
shutdown port. You'll need to have some thread hanging around to keep the JVM
from terminating; if you don't have such a thread, why are you bothering with
embedded?
> if I start the server with a GUI window, so the container
> remains alive due to the GUI thread, stopping the server
> does not really work, as even though it says that the
> Connector stopped, I can still access the server for some
> seconds and then it starts answering "resource not available",
> but the thing is, it still answers to the port.
It's your responsibility to terminate your GUI thread so the JVM can kill off
all the daemon threads.
> The code looks like this:
> ----------------------------------
> this.theEmbedded = new Embedded();
> this.theEmbedded.setCatalinaHome(new File("tomcat_6").getAbsolutePath());
> // Add the engine
> this.engine = this.theEmbedded.createEngine();
> this.engine.setName("Catalina");
> this.engine.setDefaultHost("localhost");
> // Create the host
> this.host = this.theEmbedded.createHost("localhost", ".");
> this.engine.addChild(this.host);
> this.theContext = this.theEmbedded.createContext("/",
> this.theConfiguration.getBasePath());
> this.theContext.setReloadable(false);
> this.host.addChild(this.theContext);
> this.theEmbedded.addEngine(this.engine);
> // Add a conector
> this.connector =
> this.theEmbedded.createConnector((java.net.InetAddress) null,
> this.port, false);
> this.theEmbedded.addConnector(this.connector);
> this.theEmbedded.start();
You really use "this." everywhere? Seems a bit tedious, to say nothing of
making code reviews difficult.
> So, is the Tomcat 6 embedded engine broken or do I have to
> change the code?
You have to change your code; you got lucky in 5.5.
> Nothing in the API seemed to indicate any changes needed
Yes, the doc could be improved here. You could create a FAQ/Wiki entry based
on your findings.
- Chuck
THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY
MATERIAL and is thus for use only by the intended recipient. If you received
this in error, please contact the sender and delete the e-mail and its
attachments from all computers.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]