All this Application Server development is funny... it is like going back to 16-bit Windows (remember, back then, if a single application crashed, everything went down with it). It is the same with this modern (
JavaEnterpriseEdition based ) application servers, if one application goes crazy (infinite loop, very long and slow process, memory leak, etc), it will take down the entire application server, and there is no way around that that I know of (Same thing with Eclipse, if one plug-in goes crazy, everything goes down) it is funny (and sad at the same time) because so much time and resources were wasted trying to give processes proper isolation at the OS level, and now we are using technologies that make that effort irrelevant.
So from a
ProcessIsolation perspective all those
JavaEnterpriseEdition ApplicationServer are in fact limited to run only one application: Want to run 2 applications in
TomCat and be 100% sure that one can not make the other crash? Run 2
TomCat instances.
Same thing goes for the free
ApplicationServers such as
JettyAs,
JbossApplicationServer,
ApacheGeronimo ,
GlassFish,
JonAs,
SpringSourcedmServer and even the really expensive ones, like
WebLogic or
WebSphere. What some of the expensive ones offer as way to partially overcome this limitation are UIs to easily configure multiple different
JavaVirtualMachine processes from a single management console, but due to the fact that the
JavaVirtualMachine can not manage its memory dinamically (you have to statically set the minimum and maximum memory it will use, you can not leave that job to the
OperatingSystem), you easily end up with an under or over utilized RAM
The funniest thing is that the much security and stability criticised
InternetInformationServer can actually run
AspDotNet applications with real
ProcessIsolation if it is configured in
WorkerProcessIsolationMode.
And now, with
GoogleChrome even
JavaScript has
ProcessIsolation...
See also
JavaOs,
JayNode