cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guillaume Sauthier (JIRA)" <j...@apache.org>
Subject [jira] Created: (CXF-1642) CXF Bundle is missing an Import-Package for woodstox
Date Tue, 10 Jun 2008 14:10:46 GMT
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.


Mime
View raw message