Friday, April 09, 2010

JBoss Web 3.0.0 Beta 2 Released

Building on JBoss Web Beta1, this new release focuses on integration refactorings with JBoss AS, as well as trimming down the configuration profile used to focus on the standalone Servlet and JSP functionality. As a result, the download sizes and startup times are significantly reduced over Beta1, while allowing easily scaling up to JBoss AS when needed.

Looking forward to future releases, integration of EE 6 naming as well as annotation processing optimizations are planned.

As with Beta1, this release is Servlet 3.0 and JSP 2.2 compliant.

JBoss Web downloads page: http://www.jboss.org/jbossweb/downloads/jboss-web/

Wednesday, February 17, 2010

JBoss AS 6.0.0 M2 Released

This release is significant for web as it moves off the AS 5 development branch and now supports Servlet 3.0. As I have listed in the previous entries on JBoss Web 3, there is more than simply this new API that has been added.

One of the main refactorings has been around the integration of the JSP container. Although not the most trendy EE technology, JSP is still used in many applications, and its integration was a big issue. The main difficulty is that tag library descriptors (TLD) processing is serious business (possibly the most convoluted item in the entire EE, actually), where Jasper (the JSP container in Tomcat and JBoss Web) would end up doing its own parsing. Very hackish and fragile code too ... As the Servlet container also had to be aware of TLDs, this meant duplicating parsing. So a lot of work went into factoring this out of Jasper, and moving off all TLD processing to JBoss Metadata and AS deployers, and replacing Jasper's code with usage of metadata objects representing the TLDs. The end result is that, in addition to a massive speed improvement over AS 5 (for the first JSP compilation in a webapp), TLDs are now fully configurable using AS deployers. Pretty powerful.

Another work area has been around connectors, with the addition of async support in Servlet 3. Rather than adding a new code path to support it, I chose to simply take advantage of the HttpEvent API that was introduced in JBoss Web 2.1. Of course, there was a problem for the connectors which did not support events. So I separated the event functionality in two parts: the part that required polling and non blocking IO (which was not needed to implement Servlet 3's async), and the rest (suspend, resume and timeout, mostly). All connectors now have support for the later (with APR HTTP also supporting the former). Pretty painless overall. Except the dispatcher logic, but having it look like the other include and forward dispatchers seemed like a maintainable solution.

Last, lots of time went into supporting web.xml modularity, Servlet container initializers, and all the annotation scanning (injections and the new Servlet 3 features). That means lots of scanning. Although this is convenient for developers and library packagers, this also causes a war deployment time impact. To address that, the war deployers support scanning exclusions. Large legacy webapps can be tagged with a jboss-scanning.xml and/or started on demand. We did that for our own admin-console. This can allow keeping war deployment time in line with the web container in AS 5, although as users will need to do some homework (given the default is to be EE compliant), some will see apparent regressions here.

A lot of work remains for AS M3 and beyond, including extracting a JBoss Web standalone packaging which makes sense in terms of size and feature set.

For the general AS 6.0.0 M2 release announcement, see Brian's blog entry.

Wednesday, January 06, 2010

JBoss Web passes standalone Servlet 3.0 TCK

The JBoss Web team is happy to report that the standalone TCKs for Servlet 3.0, JSP 2.2 and EL 2.2 now pass on JBoss Web 3.0.0 Beta 1.

JBoss Web downloads page: http://www.jboss.org/jbossweb/downloads/jboss-web/