2010-07-06 60 views
0

我用wsdl2java CXF命令生成了一個java包。 現在我想部署wsdl到tomcat服務器,但我在日誌中得到這些錯誤時,我啓動服務器如何檢查wsdl的有效性,因爲我有IllegalAnnotationsException?

我使用opebEjb。

它看起來像wsdl無效。 我該如何檢查?

日誌:

產生的原因:在org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl org.apache.cxf.service.factory.ServiceConstructionException :javax.xml.ws.WebServiceException。 java:268) at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:202) at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:397) at sun.reflect。 NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl。調用(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java:597) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1412) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1373) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333) ...... 30多個 引起通過:org.apache.cxf.service.factory.ServiceConstructionException at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:274) at org.apache.cxf.service.factory.ReflectionServiceFac toryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:371) 在org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:525) 在org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean。的java:422) 在org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:190) 在org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:164) 在org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:100) 在org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:117) 在org.apache.cxf.jaxws.JaxWsServerFactoryBean。創建(JaxWsServer (org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:252) ...) 39多

造成的:com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptions 48個計數

有與@XmlElementDecl沒有的ObjectFactory爲元素{甕:HL7的組織:V3} assignedDevice。在保護javax.xml.bind.JAXBElement com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer.assignedDevice 在com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer 在保護 : 這個問題涉及到以下位置java.util.List com.santeos.dmp.iheprofiles.hl7。PRPAIN201304UV02MFMIMT700701UV01ControlActProcess.authorOrPerformer 在com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess 在保護com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message.controlActProcess 在com.santeos.dmp .iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message

有與@XmlElementDecl爲元素{甕:HL7的組織:V3}無ObjectFactory的assignedPerson。在保護javax.xml.bind.JAXBElement com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer.assignedPerson 在com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer 在保護 : 這個問題涉及到以下位置java.util.List的com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess.authorOrPerformer 在com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess 在保護com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess com.santeos.dmp .iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message.controlActProcess at com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message

+0

我遇到了同樣的問題。你能分享你的解決方案嗎? – rahul 2011-05-07 00:44:40

回答

0

你傳遞給wsdl2java的標誌是什麼?

你能檢查爲ObjectFactory類生成的代碼嗎?檢查這些以查看是否有任何方法使用@XmlElementDecl註釋。

+0

這是我的wsdl2java命令: 調用wsdl2java -exsh true -autoNameResolution -p%PACKAGE_BASE%.pdq -p「urn:hl7-org:v3」=%PACKAGE_BASE%.hl7 -d%PROJECT_HOME%\ src \ main \ java \%WSDL_HOME%\ PDQSupplier.wsdl ObjectFactory有很多使用@XmlElementDecl註解的方法 實際上,問題在於包「hl7」對其他包是通用的。所以,我已經在wsdl命令中將軟件包名稱從「hl7」更改爲「pdq.hl7」,並且它工作正常! – Julien 2010-07-21 07:56:22

1

由於Julien在上面的評論中告訴,如果您使用多個wsdl,則可以通過更改每個wsdl的軟件包名稱來解決此問題。就我而言,我有兩個wsdl,一個是在我的工作空間中下載的,還有所有需要的xsd,第二個是使用URL。他們都指向同一臺服務器。下載第一個wsdl的原因是對象工廠中的兩個名稱衝突。是的,外部綁定不起作用,只是因爲wsdl完全混亂。

所以,當我試圖使用wsdltojava生成源代碼時,它失敗了「沒有ObjectFactory和@XmlElementDecl ...」。我遵循Julien的評論,問題得到解決。我不確定這是否是最好和更乾淨的解決方案,但它的工作。