Hi all,
I'm a committer on the Apache Brooklyn [1] and the winrm4j [2] projects.
We're upgrading Apache Brooklyn to Karaf 4.2.7 for the next release, and
have hit a big problem trying to upgrade CXF to 3.3.2 (from 3.2.8).
We'd appreciate some help and advice for how to fix or work around this.
There is a lot more details (including of the error investigation) in
this Apache Brooklyn email thread: [3].
We're now getting an IllegalAnnotationsException, with the underlying error:
Two classes have the same XML type name
"{http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd}objectFactory". Use
@XmlType.name and @XmlType.namespace to assign different names to them.
It works when run outside of Karaf.
Comparing the OSGi bundles and package exports/imports, I'm guessing the
underlying problem is that javax.xml.bind.annotation.XMLRegistry is now
coming from two places:
package:exports | grep javax.xml.bind.annotation
javax.xml.bind.annotation.adapters │ 2.2.8 │ 0 │
org.apache.felix.framework
javax.xml.bind.annotation.adapters │ 2.3.2 │ 108 │
jakarta.xml.bind-api
javax.xml.bind.annotation │ 2.2.8 │ 0 │
org.apache.felix.framework
javax.xml.bind.annotation │ 2.3.2 │ 108 │
jakarta.xml.bind-api
The jakarta.xml.bind-api bundle wasn't in our Karaf distro before - only
since we upgrade CXF (it comes from the feature cxf-specs, version 3.3.2).
The winrm4j-client OSGi bundle is also being upgraded to use CXF 3.3.2 -
its package import is from jakarta.xml.bind-api.
---
The stack trace is:
2019-12-03T11:44:16,468 wmhGA3U2-[ut059oi7tk,ltajipcuun] WARN 103
i.c.w.c.WinRmClient [ager-Ak6FHXbO-32] Error creating WinRm service with
mbean strategy (trying other strategies):
org.apache.cxf.service.factory.ServiceConstructionException
org.apache.cxf.service.factory.ServiceConstructionException: null
at
org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:355)
~[!/:3.3.2]
at
org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
~[!/:3.3.2]
at
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:426)
~[!/:3.3.2]
at
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:528)
~[!/:3.3.2]
at
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:263)
~[!/:3.3.2]
at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:199)
~[?:?]
at
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:103)
~[!/:3.3.2]
at
org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:91)
~[!/:3.3.2]
at
org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:159)
~[!/:3.3.2]
at
org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142)
~[?:?]
at
org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:95)
~[!/:3.3.2]
at
io.cloudsoft.winrm4j.client.WinRmFactory.doCreateServiceWithBean(WinRmFactory.java:97)
~[!/:?]
<snip>
Caused by:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2
counts of IllegalAnnotationExceptions
at
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
~[?:1.8.0_201]
at
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:445)
~[?:1.8.0_201]
at
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:277)
~[?:1.8.0_201]
at
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:124)
~[?:1.8.0_201]
at
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1123)
~[?:1.8.0_201]
at
com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:147)
~[?:1.8.0_201]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[?:1.8.0_201]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[?:1.8.0_201]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:1.8.0_201]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]
at
javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:222)
~[?:1.8.0_201]
at javax.xml.bind.ContextFinder.find(ContextFinder.java:396)
~[?:1.8.0_201]
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
~[?:1.8.0_201]
at
org.apache.cxf.common.jaxb.JAXBContextCache.createContext(JAXBContextCache.java:357)
~[!/:3.3.2]
at
org.apache.cxf.common.jaxb.JAXBContextCache.getCachedContextAndSchemas(JAXBContextCache.java:246)
~[!/:3.3.2]
at
org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBDataBinding.java:498)
~[!/:3.3.2]
at
org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:353)
~[!/:3.3.2]
... 43 more
Aled
[1]
https://lists.apache.org/thread.html/ead4351d187f7d7e7c257cb47f2490b3139d0de8d6fe15c43beea4d3%40%3Cdev.brooklyn.apache.org%3E
[2] https://github.com/cloudsoft/winrm4j/
[3] FIXME mailing list link