CXF and OSGI have problems with classloaders related to 
javax.xml.namespace.QName
---------------------------------------------------------------------------------

                 Key: CXF-1550
                 URL: https://issues.apache.org/jira/browse/CXF-1550
             Project: CXF
          Issue Type: Bug
          Components: JAX-WS Runtime
    Affects Versions: 2.0.5
            Reporter: Dave Brosius
            Priority: Minor
             Fix For: 2.0.6


org.apache.cxf.common.xml.schema.SchemaCollection attempts to access 
javax.xml.namespace.QName from the stax-api jar. In a normal environment this 
is fine, but in OSGI, the osgi framework pulls the dependency from the system 
class path as their are no constraints given to the class loader. This causes 
problems as the QName class is different between stax-api and the jdk one. To 
resolve this, the Manifest of cxf-2.0.5-incubator.jar could specify a minimum 
version for the java.xml.* packages that precludes the classloaders from 
loading these classes from the system (osgi) classpath. This version then needs 
to be the version exported by the stax-api jar.



[CODE]
Caused by: java.lang.LinkageError: loader constraint violation in interface 
itable initialization: when resolving method 
"org.apache.cxf.common.xmlschema.FixedExtensionDeserializer.deserialize(Lorg/apache/ws/commons/schema/XmlSchemaObject;Ljavax/xml/namespace/QName;Lorg/w3c/dom/Node;)V"
 the class loader (instance of 
org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) of the current class, 
org/apache/cxf/common/xmlschema/FixedExtensionDeserializer, and the class 
loader (instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) 
for interface org/apache/ws/commons/schema/extensions/ExtensionDeserializer 
have different Class objects for the type javax/xml/namespace/QName used in the 
signature
        at 
org.apache.cxf.common.xmlschema.SchemaCollection.<init>(SchemaCollection.java:69)
        at 
org.apache.cxf.common.xmlschema.SchemaCollection.<init>(SchemaCollection.java:64)
        at org.apache.cxf.service.model.ServiceInfo.<init>(ServiceInfo.java:44)
        at 
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:300)
        at 
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:368)
        at 
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:162)
        at 
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:97)
        at 
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:74)
        at 
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:113)
        at 
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:160)
        at 
com.primavera.echo.installer.EchoInstaller.init(EchoInstaller.java:23)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1378)
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1339)
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1299)
        ... 14 more
[/CODE]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to