CXF Bundle is missing an Import-Package for woodstox
----------------------------------------------------
Key: CXF-1642
URL: https://issues.apache.org/jira/browse/CXF-1642
Project: CXF
Issue Type: Bug
Affects Versions: 2.0.6, 2.1
Environment: Running CXF with cxf-bundle
Reporter: Guillaume Sauthier
When running the cxf-bundle (2.0.6) in an OSGi environment (Felix), the Bus
cannot initialize sucesfuly:
2008-06-10 14:54:27,350 : SpringBusFactory.createBus : Failed to create
application context.
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected
exception parsing XML document from class path resource [META-INF/cxf/cxf.xml];
nested exception is javax.xml.transform.TransformerException:
org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or change
an object in a way which is incorrect with regard to namespaces.
After a bit of digging, I've found that Xerces was used instead of Woodstox.
This is caused by the TunedDocumentLoader:
try {
Class<?> cls =
Class.forName("com.ctc.wstx.sax.WstxSAXParserFactory");
saxParserFactory = (SAXParserFactory)cls.newInstance();
nsasaxParserFactory = (SAXParserFactory)cls.newInstance();
} catch (Exception e) {
//woodstox not found, use any other Stax parser
saxParserFactory = SAXParserFactory.newInstance();
nsasaxParserFactory = SAXParserFactory.newInstance();
}
Indeed, the cxf-bundle do not import the 'com.ctc.wstx.sax' package, so we fall
back in the Exception handling, and CXF uses the default SAXParserFactory,
which is provided by Xerces.
Just to be sure, I've added manually an Import-Package on 'com.ctc.wstx.sax',
and provided woodstox as a bundle, and everythings works better !
I've only tested that on 2.0.6, but I've checked the Import-Package of the
cxf-bundle version 2.1 and there is still no import, so I guess the problem is
there too.
What I'm proposing is simply add an optional dependency on Woodstox, so that if
it is available, it will be used.
Import-Package com.ctc.wstx.sax:resolution:=optional, *
BTW, I'm curious, how about normal users who are not using OSGi ? What happen
if they remove the woodstox.jar ? Will they have the same behavior than me ? If
so, CXF has a real dependency on woodstox, and it should not try to hide it
using Class.forName ...
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.