java - wsdl2java Two classes have the same XML type name "{http://***.***.***.***/***/***/***}objectFactory" -


this problem occur in newer version of servicemix(tested on 5.4 - cxf 3.0.2 , 5.3 - cxf 2.7.11) in older version 4.5.2 cxf 2.6.8 works, webservices created.

in our project have lot of different webservices generated maven plugin wsdl2java in diffrent bundles. in servicemix 5.4 webservices down due errors, strange in previous servicemix 5.3 1 of bundle able start without modification in project.

in maven tried use additional extraarg:

<extraarg>-autonameresolution</extraarg> <extraarg>-xjc-npa</extraarg> 

but without result

stacktrace:

unable start blueprint container bundle bundle-name1     org.osgi.service.blueprint.container.componentdefinitionexception: unable initialize bean .camelblueprint.factory.camelcontext         @ org.apache.aries.blueprint.container.beanrecipe.runbeanprocinit(beanrecipe.java:714)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.internalcreate2(beanrecipe.java:824)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.internalcreate(beanrecipe.java:787)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.di.abstractrecipe$1.call(abstractrecipe.java:79)[19:org.apache.aries.blueprint.core:1.4.1]         @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:334)[:1.7.0_21]         @ java.util.concurrent.futuretask.run(futuretask.java:166)[:1.7.0_21]         @ org.apache.aries.blueprint.di.abstractrecipe.create(abstractrecipe.java:88)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintrepository.createinstances(blueprintrepository.java:245)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintrepository.createinstance(blueprintrepository.java:230)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintrepository.create(blueprintrepository.java:145)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintcontainerimpl.getcomponentinstance(blueprintcontainerimpl.java:753)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.camel.blueprint.handler.camelnamespacehandler$cameldependenciesfinder.process(camelnamespacehandler.java:863)[105:org.apache.camel.camel-blueprint:2.13.2]         @ org.apache.aries.blueprint.container.blueprintcontainerimpl.processprocessors(blueprintcontainerimpl.java:528)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintcontainerimpl.dorun(blueprintcontainerimpl.java:361)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintcontainerimpl.run(blueprintcontainerimpl.java:269)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintextender.createcontainer(blueprintextender.java:276)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintextender.createcontainer(blueprintextender.java:245)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintextender.modifiedbundle(blueprintextender.java:235)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.util.tracker.hook.bundlehookbundletracker$tracked.customizermodified(bundlehookbundletracker.java:500)[14:org.apache.aries.util:1.1.0]         @ org.apache.aries.util.tracker.hook.bundlehookbundletracker$tracked.customizermodified(bundlehookbundletracker.java:433)[14:org.apache.aries.util:1.1.0]         @ org.apache.aries.util.tracker.hook.bundlehookbundletracker$abstracttracked.track(bundlehookbundletracker.java:725)[14:org.apache.aries.util:1.1.0]         @ org.apache.aries.util.tracker.hook.bundlehookbundletracker$tracked.bundlechanged(bundlehookbundletracker.java:463)[14:org.apache.aries.util:1.1.0]         @ org.apache.aries.util.tracker.hook.bundlehookbundletracker$bundleeventhook.event(bundlehookbundletracker.java:422)[14:org.apache.aries.util:1.1.0]         @ org.apache.felix.framework.util.secureaction.invokebundleeventhook(secureaction.java:1127)[org.apache.felix.framework-4.4.1.jar:]         @ org.apache.felix.framework.util.eventdispatcher.createwhitelistfromhooks(eventdispatcher.java:696)[org.apache.felix.framework-4.4.1.jar:]         @ org.apache.felix.framework.util.eventdispatcher.firebundleevent(eventdispatcher.java:484)[org.apache.felix.framework-4.4.1.jar:]         @ org.apache.felix.framework.felix.firebundleevent(felix.java:4429)[org.apache.felix.framework-4.4.1.jar:]         @ org.apache.felix.framework.felix.startbundle(felix.java:2100)[org.apache.felix.framework-4.4.1.jar:]         @ org.apache.felix.framework.felix.setactivestartlevel(felix.java:1299)[org.apache.felix.framework-4.4.1.jar:]         @ org.apache.felix.framework.frameworkstartlevelimpl.run(frameworkstartlevelimpl.java:304)[org.apache.felix.framework-4.4.1.jar:]         @ java.lang.thread.run(thread.java:722)[:1.7.0_21]     caused by: org.apache.camel.nosuchbeanexception: cannot lookup: routebuilder registry: org.apache.camel.blueprint.blueprintcontainerregistry@597012f0 expected type: interface org.apache.camel.routesbuilder due: error when instantiating bean ****cxfclient of class ***.***.***.***.***.***.***.***         @ org.apache.camel.impl.compositeregistry.lookupbynameandtype(compositeregistry.java:62)         @ org.apache.camel.impl.propertyplaceholderdelegateregistry.lookupbynameandtype(propertyplaceholderdelegateregistry.java:63)         @ org.apache.camel.util.camelcontexthelper.lookup(camelcontexthelper.java:129)         @ org.apache.camel.model.routebuilderdefinition.createroutes(routebuilderdefinition.java:70)         @ org.apache.camel.core.xml.abstractcamelcontextfactorybean.installroutes(abstractcamelcontextfactorybean.java:750)         @ org.apache.camel.core.xml.abstractcamelcontextfactorybean.setuproutes(abstractcamelcontextfactorybean.java:311)         @ org.apache.camel.blueprint.camelcontextfactorybean.afterpropertiesset(camelcontextfactorybean.java:304)         @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)[:1.7.0_21]         @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)[:1.7.0_21]         @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)[:1.7.0_21]         @ java.lang.reflect.method.invoke(method.java:601)[:1.7.0_21]         @ org.apache.aries.blueprint.utils.reflectionutils.invoke(reflectionutils.java:297)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.invoke(beanrecipe.java:958)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.runbeanprocinit(beanrecipe.java:712)[19:org.apache.aries.blueprint.core:1.4.1]         ... 30 more     caused by: org.osgi.service.blueprint.container.componentdefinitionexception: error when instantiating bean ****cxfclient of class ***.***.***.***.***.***.***.***         @ org.apache.aries.blueprint.container.beanrecipe.getinstance(beanrecipe.java:300)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.internalcreate2(beanrecipe.java:806)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.internalcreate(beanrecipe.java:787)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.di.abstractrecipe$1.call(abstractrecipe.java:79)[19:org.apache.aries.blueprint.core:1.4.1]         @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:334)[:1.7.0_21]         @ java.util.concurrent.futuretask.run(futuretask.java:166)[:1.7.0_21]         @ org.apache.aries.blueprint.di.abstractrecipe.create(abstractrecipe.java:88)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.di.refrecipe.internalcreate(refrecipe.java:62)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.di.abstractrecipe.create(abstractrecipe.java:106)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.getinstance(beanrecipe.java:268)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.internalcreate2(beanrecipe.java:806)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.internalcreate(beanrecipe.java:787)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.di.abstractrecipe$1.call(abstractrecipe.java:79)[19:org.apache.aries.blueprint.core:1.4.1]         @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:334)[:1.7.0_21]         @ java.util.concurrent.futuretask.run(futuretask.java:166)[:1.7.0_21]         @ org.apache.aries.blueprint.di.abstractrecipe.create(abstractrecipe.java:88)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.di.refrecipe.internalcreate(refrecipe.java:62)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.di.abstractrecipe.create(abstractrecipe.java:106)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.setproperty(beanrecipe.java:933)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.setproperties(beanrecipe.java:907)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.setproperties(beanrecipe.java:888)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.internalcreate2(beanrecipe.java:820)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.internalcreate(beanrecipe.java:787)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.di.abstractrecipe$1.call(abstractrecipe.java:79)[19:org.apache.aries.blueprint.core:1.4.1]         @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:334)[:1.7.0_21]         @ java.util.concurrent.futuretask.run(futuretask.java:166)[:1.7.0_21]         @ org.apache.aries.blueprint.di.abstractrecipe.create(abstractrecipe.java:88)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintrepository.createinstances(blueprintrepository.java:245)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintrepository.createinstance(blueprintrepository.java:230)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintrepository.create(blueprintrepository.java:145)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.blueprintcontainerimpl.getcomponentinstance(blueprintcontainerimpl.java:753)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.camel.blueprint.blueprintcontainerregistry.lookupbynameandtype(blueprintcontainerregistry.java:54)         @ org.apache.camel.impl.compositeregistry.lookupbynameandtype(compositeregistry.java:56)         ... 43 more     caused by: org.apache.cxf.service.factory.serviceconstructionexception         @ org.apache.cxf.jaxb.jaxbdatabinding.initialize(jaxbdatabinding.java:341)         @ org.apache.cxf.service.factory.abstractservicefactorybean.initializedatabindings(abstractservicefactorybean.java:86)         @ org.apache.cxf.service.factory.reflectionservicefactorybean.buildservicefromclass(reflectionservicefactorybean.java:490)         @ org.apache.cxf.jaxws.support.jaxwsservicefactorybean.buildservicefromclass(jaxwsservicefactorybean.java:704)         @ org.apache.cxf.service.factory.reflectionservicefactorybean.initializeservicemodel(reflectionservicefactorybean.java:550)         @ org.apache.cxf.service.factory.reflectionservicefactorybean.create(reflectionservicefactorybean.java:265)         @ org.apache.cxf.jaxws.support.jaxwsservicefactorybean.create(jaxwsservicefactorybean.java:215)         @ org.apache.cxf.frontend.abstractwsdlbasedendpointfactory.createendpoint(abstractwsdlbasedendpointfactory.java:102)         @ org.apache.cxf.frontend.clientfactorybean.create(clientfactorybean.java:91)         @ org.apache.cxf.frontend.clientproxyfactorybean.create(clientproxyfactorybean.java:157)         @ org.apache.cxf.jaxws.jaxwsproxyfactorybean.create(jaxwsproxyfactorybean.java:142)         @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)[:1.7.0_21]         @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)[:1.7.0_21]         @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)[:1.7.0_21]         @ java.lang.reflect.method.invoke(method.java:601)[:1.7.0_21]         @ org.apache.aries.blueprint.utils.reflectionutils.invoke(reflectionutils.java:297)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.invoke(beanrecipe.java:958)[19:org.apache.aries.blueprint.core:1.4.1]         @ org.apache.aries.blueprint.container.beanrecipe.getinstance(beanrecipe.java:298)[19:org.apache.aries.blueprint.core:1.4.1]         ... 75 more     caused by: com.sun.xml.bind.v2.runtime.illegalannotationsexception: 2 counts of illegalannotationexceptions     2 classes have same xml type name "{http://***.***.***.***/***/***/***}objectfactory". use @xmltype.name , @xmltype.namespace assign different names them.         problem related following location:             @ ***.***.***.***.***.***.***.objectfactory         problem related following location:             @ 1***.1***.1***.1***.1***.1***.1***.objectfactory     2 classes have same xml type name "{http://***.***.***.***/***/***/***}objectfactory". use @xmltype.name , @xmltype.namespace assign different names them.         problem related following location:             @ ***.***.***.***.***.***.***.objectfactory         problem related following location:             @ 1***.1***.1***.1***.1***.objectfactory          @ com.sun.xml.bind.v2.runtime.illegalannotationsexception$builder.check(illegalannotationsexception.java:102)         @ com.sun.xml.bind.v2.runtime.jaxbcontextimpl.gettypeinfoset(jaxbcontextimpl.java:472)         @ com.sun.xml.bind.v2.runtime.jaxbcontextimpl.<init>(jaxbcontextimpl.java:302)         @ com.sun.xml.bind.v2.runtime.jaxbcontextimpl$jaxbcontextbuilder.build(jaxbcontextimpl.java:1140)         @ com.sun.xml.bind.v2.contextfactory.createcontext(contextfactory.java:154)         @ com.sun.xml.bind.v2.contextfactory.createcontext(contextfactory.java:121)         @ sun.reflect.generatedmethodaccessor70.invoke(unknown source)         @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)[:1.7.0_21]         @ java.lang.reflect.method.invoke(method.java:601)[:1.7.0_21]         @ javax.xml.bind.contextfinder.newinstance(contextfinder.java:222)[:2.4.0]         @ javax.xml.bind.contextfinder.find(contextfinder.java:396)[:2.4.0]         @ javax.xml.bind.jaxbcontext.newinstance(jaxbcontext.java:656)[:2.4.0]         @ org.apache.cxf.common.jaxb.jaxbcontextcache$2.run(jaxbcontextcache.java:345)         @ org.apache.cxf.common.jaxb.jaxbcontextcache$2.run(jaxbcontextcache.java:343)         @ java.security.accesscontroller.doprivileged(native method)[:1.7.0_21]         @ org.apache.cxf.common.jaxb.jaxbcontextcache.createcontext(jaxbcontextcache.java:343)         @ org.apache.cxf.common.jaxb.jaxbcontextcache.getcachedcontextandschemas(jaxbcontextcache.java:244)         @ org.apache.cxf.jaxb.jaxbdatabinding.createjaxbcontextandschemas(jaxbdatabinding.java:484)         @ org.apache.cxf.jaxb.jaxbdatabinding.initialize(jaxbdatabinding.java:339)         ... 92 more 

edit

i tried downgrade cxf 2.6.8 same errors so, suppose problem somewhere else maybe in org.apache.aries.blueprint.core.

edit 2

i tried create 1 big bundle generated classes problem same

in case generate ws-client code via cxf-codegen-plugin, separate package names of ws-client bundles/parts specific configuration. achieved similar in 1 of projects so:

 ...  <plugin>         <groupid>org.apache.cxf</groupid>         <artifactid>cxf-codegen-plugin</artifactid>         <version>${cxf.version}</version>         <executions>             <execution>                 <id>generate-sources</id>                 <phase>generate-sources</phase>                 <configuration>                     <sourceroot>${basedir}/src/main/gen</sourceroot>                     <wsdloptions>                         <wsdloption>                             <wsdl>${basedir}/src/main/resources/mywsendpoint1.wsdl</wsdl>                             <extraargs>                                 <extraarg>-client</extraarg>                                 <!--                                 <extraarg>-validate</extraarg>                                 -->                                 <extraarg>-p</extraarg>                                 <extraarg>com.acme.ws.jaxb.ns1</extraarg>                                 <extraarg>-wsdllocation</extraarg>                                 <extraarg></extraarg>                             </extraargs>                         </wsdloption>                         <wsdloption>                             <wsdl>${basedir}/src/main/resources/mywsendpoint2.wsdl</wsdl>                             <extraargs>                                 <extraarg>-client</extraarg>                                 <!--                                 <extraarg>-validate</extraarg>                                 -->                                 <extraarg>-p</extraarg>                                 <extraarg>com.acme.ws.jaxb.ns2</extraarg>                                 <extraarg>-wsdllocation</extraarg>                                 <extraarg></extraarg>                             </extraargs>                         </wsdloption>                     </wsdloptions>                 </configuration>                 <goals>                     <goal>wsdl2java</goal>                 </goals>             </execution>         </executions>  </plugin>            ...     

thus, "individual" packages each ws-client specific {http://***.***.***.***/***/***/***}objectfactory should generated might avoid conflicts during code generation phase. thereby, @ runtime, no namespace-related issues should blocking you.

keep in mind com.acme.ws.jaxb.ns1 , com.acme.ws.jaxb.ns2 suggestions , use whatever seems valid project there.

see apache cxf - wsdl java

-p [ wsdl-namespace= ] packagename

specifies zero, or more, package names use generated code. optionally > specifies wsdl namespace package name mapping.

comments welcome.


Comments