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.