Vincent's feedback reminded me about something else we probably should
look at. Vincent proposed to add a dependency on the Xerces/Xalan XML
serializer. As noted, I'd prefer to stick to plain JAXP. But yes, with
Java 1.4 JAXP is built in so the 4 XML JARs are actually not necessary
anymore (would one think). There are several things we can do:

1. Just remove them.

Good:
- Makes the distribution a lot smaller.

Problems:
- Early Java 1.4 and 1.5 JVMs contain (very) old and buggy JAXP
implementations. It's a good idea to always replace them (this gets me
to solution 2).
- Our test code has a (useful) dependency on Xalan's XPath API. Java 1.4
provides an old JAXP version without XPath support (javax.xml.xpath,
available with Java 1.5). So we've got a problem here for the time being.

2. Move the 4 JARs to a lib/endorsed directory and adjust our scripts to
insert them into the bootclasspath which has the effect of overriding
the JAXP implementation of the JVM.

Good:
- This also makes it much clearer that these JARs are not a dependency
like every other.

Problems:
- User might wonder why the JARs are suddenly in a different place.

Open Question:
- Should we start programming against JAXP 1.3 (because of the XPath API)?
But that requires that all users install JAXP 1.3 implementations in
their environments which can be problematic for older application
servers (like an old WebSphere which is used in many bigger companies).
I'd say we should stick to JAXP 1.2 until we can move to Java 1.5.

3. Remove the implementations but not the xml-apis.jar with the JAXP 1.3
API.

Good:
- Allows us to use the XPath and Validation facilities.

Problems:
- Pre-programmed user problems because old JAXP implementations are
present and people don't know how to replace them or are not allowed to
replace them or it's a stability danger to the whole application server
when replacing it once you figure out how to do it.


I guess it's clear that only solution 2 makes sense if we want to change
something. And that would be revisited once we move to Java 1.5. Have I
missed something?

Jeremias Maerki

Reply via email to