The conflict may also come from tomcat/lib/jaxp.jar.
The problem is that in Tomcat 3.x you have to put your parsers in the classpath before everything else becouse they are no relying on system properties to decide which parser to use. There is an explanation on how to to this is tomcat´s archives. In Tomcat 4.x the parser loaded by Tomcat for it´s own use does not conflict on the parser used by applications. The problem is solved in last version of JBOSS by using system properties to define which parser to use. I´ll look for the archives and post them later
Look at the content of Run.bat in JBOSS/bin
REM Add the XML parser jars and set the JAXP factory names
REM Crimson parser JAXP setup(default)
set JAXP=%JAXP% -Djavax.xml.parsers.SAXParserFactory=org.apache.crimson.jaxp.SAXParserFactoryImpl
If you replace the factory classes for the ones in your favourite parser that should solve the problem. This is the standard way to do it in JAXP