Good, cheap, non-tomcat servlet container?
Specifically, not using the Jasper jsp compiler, as it can't be counted on to recompile a changed .jsp (see http://issues.apache.org/bugzilla/show_bug.cgi?id=33453). I am frustrated with Apache software quality and (lack of)support, and searching for alternatives to Tomcat. It would also have to either work with JBoss or include an EJB stack with similar functionality to JBoss.
I have looked at Sun Application Server, which appears to use Tomcat in its entirety, and Jetty, which uses Jasper.
[510 byte] By [
jleecha] at [2007-10-2 17:00:36]

> Specifically, not using the Jasper jsp compiler, as
> it can't be counted on to recompile a changed .jsp
> (see
> http://issues.apache.org/bugzilla/show_bug.cgi?id=3345
> 3). I am frustrated with Apache software quality and
> (lack of)support, and searching for alternatives to
> Tomcat. It would also have to either work with JBoss
> or include an EJB stack with similar functionality to
> JBoss.
>
> I have looked at Sun Application Server, which
> appears to use Tomcat in its entirety, and Jetty,
> which uses Jasper.
I also have frustration(s) on Tomcat, in many aspects.
I recommend Resin Web server as the 'frustration buster'.
http://www.caucho.com/
The tech-lead Scott Ferguson is a very knowledgeable man and frequently gives insightfull
answers on Resin user mailing list.
hiwaa at 2007-7-13 18:14:09 >

Here's a quote from Resin ML archive:
--
<quote>
From Resin users ML archive:
Q:
I have a general question about the most effective way to process JSP page
updates.
My impression of the JSP engine is that in the event of a change to the JSP
file (changed file modification date), the JSP page is automatically
recompiled and reloaded. This is a great feature -- it means you have the
flexibility that is often found in interpreted languages like Perl in terms
of not having to restart the server when changes are made.
Unfortunately for me, that flexibility breaks down when I start including
JavaBeans, or other Java classes into my JSP pages through the "import"
directive. There doesn't seem to be any way to make a JSP page also
dependent on another external class file, and to force recompilation if
that external class file
Here's an example...
start of file MyJSP.jsp...
<@ page language=java
import="com.mycompany.MyClass,caucho.sql.db.*,java.io.*" />
....some JSP code mixed with HTML....
end of file MyJSP.jsp
For the above JSP file, the servlet engine doesn't seem to recognize that
the JSP page is dependent on the file "com.mycompany.MyClass". If I make
any changes to the file MyClass.java and recompile, the changes won't take
effect until I restart the servlet engine.
Any thoughts on how to make a JSP file explicitly dependent on another
external file?
I suppose you could try to use a utility like make to help manage
dependencies, but this gets ugly -- especially for compiled JSP page
servlet classes which are temporary anyways. Any suggestions for a solution
to this problem?
-- Bryan Bunch
A:
You don't actually need to recompile the JSP pages, you just need them
reloaded. JSP pages are just like any other Java classes; you usually can
compile classes independently. The only case where you need the JSP pages
recompiled is if you change 'final static' constants.
If your classes are in the global classpath, there's nothing Resin can do. I
don't know how you're loading your classes like com.mycompany.MyClass.
However, you can put them in WEB-INF/classes or in a jar in WEB-INF/lib. When
any class/jar in either changes, Resin will reload the entire application
including any JSPs. I'm pretty sure this is what you want.
Resin lets you add to the auto-update class path. Here's how:
<http-server>
<classpath id='/home/myhome/ws/classes'/>
<classpath id='/home/myhome/ws/myjar.jar'/>
...
</http-server>
If any of the classes in /home/myhome/ws/classes changes, Resin will reload
the application just like it reloads a JSP.
If you're really daring, you can have Resin compile your beans for you.
(There are a few important bugs fixed in the latest snapshot, so you would
want to use the snapshot.) That way, you get auto-compilation and
auto-loading of your beans when you change any Java source. This is certainly
helpful for small test cases, but it can get confused for large projects.
<classpath id='/home/myhome/ws/classes' source='/home/myhome/ws/src'/>
-- Scott
</quote>
hiwaa at 2007-7-13 18:14:09 >
