We use jboss-ejb3-all.jar along with Seam and Tomcat. I am now integrating some of our own technology into it. We use Woodstox XML processor along with the stax api.
wstx-asl-2.9.3.jar and stax-api-1.0.1.jar
Now jboss-ejb3-all.jar has an implementation of javax.xml.stream.XMLInputFactory.
However, when i issue a
XMLInputFactory f = XMLInputFactory.newInstance();
which uses the version inside of jboss-ejb3-all.jar it insists on trying to use "com.bea.xml.stream.MXParserFactory" as the implementation and does not pick up Woodstox. I have no com.bea.xml.stream.MXParserFactory so i can't move on, wish to use Woodstox.
I generally understood that the rules for determining what to use is below, and works perfectly with stax-api.jar since the woodstox jar file provides the appropriate files in META-INF/services.
Could somebody please tell me how i can direct XMLInputFactory in jboss-ejb3-all.jar to pick up my XMLInputReader properly? Other than using a system property? I really don't wish to manage which version of this class gets picked up first to ensure that our app works, and i don't want to break apart jboss-ejb-all.jar.
Deriving from JAXP, the XMLInputFactory.newInstance() method determines the specific XMLInputFactory implementation class to load by using the following lookup procedure:
1. Use the javax.xml.stream.XMLInputFactory system property.
2. Use the lib/xml.stream.properties file in the JRE directory.
3. Use the Services API, if available, to determine the classname by looking in the META-INF/services/javax.xml.stream.XMLInputFactory files in jars available to the JRE.
4. Use the platform default XMLInputFactory instance.