Web deployment descriptor model loading and rewriting broken and out-dated
---------------------------------------------------------------------------
Key: PLUTO-510
URL: https://issues.apache.org/jira/browse/PLUTO-510
Project: Pluto
Issue Type: Bug
Components: descriptor
Affects Versions: 2.0.0, 2.0-refactoring
Reporter: Ate Douma
Assignee: Ate Douma
Priority: Critical
Fix For: 2.0.0, 2.0-refactoring
The current Castor based web deployment descriptor loading and rewriting is
rather out-dated, based upon and supporting servlet spec 2.3 only.
Furthermore, it isn't doing it properly even for 2.3 compliant web.xml.
As with Portlet 2.0 we need to support (at least) servlet spec 2.4 too, the
current broken model is really getting in the way and right now its *very* easy
to break Pluto like by adding multiple descriptions (separate languages) or
many other things.
We either have to expand it to support the full servlet 2.4 (or even 2.5)
web-app xsd, or otherwise choose a different solution for AFAIK the only usage
rewriting the descriptor to inject the Pluto PortletServlet during assembly.
NB: there some other related open issues for this, see: PLUTO-466, PLUTO-471
As I've been looking into the portlet descriptor loading using JAXB, I also
gave it some thought of replacing the outdated Castor configuration with a JAXB
based model too.
But, the servlet spec descriptors are *far* more complex and extensive than the
portlet descriptors, and using JAXB (default) resulted in about +/- 90 object
classes...
Reviewing again the real usage here, maintaining a full web.xml object model
*just* to inject a servlet and servlet mapping during assembly, (it is *not*
used/needed by the container), seems to be too much trouble worth it.
Although Jetspeed does use the (old still Pluto 1.0.1 based) WebApplication
object model, it does so for a complete different purpose, and not directly
related to the container by itself.
Furthermore Jetspeed only uses the interfaces, not any of the Pluto
implementation classes for it.
On the other hand, Jetspeed also has this need of rewriting the web.xml to
inject its container servlet, just like Pluto, but for that it uses a very
lightweight XPath based solution, not the Object model.
Coming to a conclusion, I've reviewed the Jetspeed solution for servlet
injection and rewrote it a little to only depend on the now standard J2SE5
XPath API and replaced the Pluto WebApp object model usage with it (as an
independent Pluto only implementation, not tied to Jetspeed).
As result, I could then throw out all the pluto.om.servlet classes and
interfaces and the Castor service handling for that.
While this might potentially break some external usages of these interfaces
(well, that is: those dependent on Pluto 1.1.xx versions), so this causes a
small migration side-effect,
anyone *relying* on the current Pluto web.xml object model handling should be
reviewing that already anyway because of its out-dated and broken state.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.