如何检查wsdl的有效性,因为我收到了IllegalAnnotationsException?

时间:2010-07-06 09:22:55

标签: wsdl cxf objectfactory

我使用wsdl2java CXF命令生成了一个java包。 现在我想将wsdl部署到tomcat服务器,但是当我启动服务器时,我在日志中遇到了这些错误

我使用的是opebEjb。

看起来wsdl无效。 我怎么检查这个?

日志:

引起:javax.xml.ws.WebServiceException:org.apache.cxf.service.factory.ServiceConstructionException  at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:268)  在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.invoke(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  在org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:274)  at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:371)  at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:525)  at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:422)  at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:190)  在org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:164)  at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:100)  在org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:117)  在org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:168)  在org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:339)  at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:252)  ... 39更多

引起:com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:48次IllegalAnnotationExceptions

对于元素{urn:hl7-org:v3} assignedDevice,没有带有@XmlElementDecl的ObjectFactory。  此问题与以下位置有关:   at protected javax.xml.bind.JAXBElement com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer.assignedDevice   在com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer   at protected java.util.List com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess.authorOrPerformer   在com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess   at protected com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFIMT700701UV01ControlActProcess com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message.controlActProcess   at com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message

对于元素{urn:hl7-org:v3} assignedPerson,没有带有@XmlElementDecl的ObjectFactory。  此问题与以下位置有关:   at protected javax.xml.bind.JAXBElement com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer.assignedPerson   在com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer   at protected java.util.List com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess.authorOrPerformer   在com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess   at protected com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFIMT700701UV01ControlActProcess com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message.controlActProcess   at com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message

2 个答案:

答案 0 :(得分:1)

正如Julien在上面的评论中所述,如果您使用多个wsdl,则可以通过更改每个wsdl的包名来解决此问题。就我而言,我有两个wsdl,一个在我的工作空间下载,所有必需的xsd和第二个使用URL。他们两个都指向同一台服务器。下载第一个wsdl的原因是对象工厂中的两个名称冲突。是的,外部绑定没有用,只是因为wsdl完全混乱。

所以,当我尝试使用wsdltojava生成源时,它失败了“没有带有@XmlElementDecl的ObjectFactory ......”。我按照Julien的评论,问题得到了解决。我不确定这是否是最好和更清洁的解决方案,但它确实有效。

答案 1 :(得分:0)

你传递给wsdl2java的标志是什么?

您可以检查ObjectFactory类的生成代码吗?检查那些是否使用@XmlElementDecl注释任何方法。