0

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

我使用opebEjb。

看起来 wsdl 无效。我怎样才能检查这个?

日志:

引起:javax.xml.ws.WebServiceException: org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:268) at org.apache.cxf.jaxws 的 org.apache.cxf.service.factory.ServiceConstructionException。 org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:397) 上的 EndpointImpl.publish(EndpointImpl.java:202) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 上 sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39) 在 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) at 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) 在 org.apache.cxf.service.factory.ReflectionServiceFactoryBean.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.EndpointImpl.getServer(EndpointImpl.java:339) 在 org.apache.cxf.jaxws.EndpointImpl 的 org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:168) .doPublish(EndpointImpl.java:252) ... 还有 39 个在 org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:339) 在 org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:252) 处创建 (JaxWsServerFactoryBean.java:168) ... 39更多的在 org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:339) 在 org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:252) 处创建 (JaxWsServerFactoryBean.java:168) ... 39更多的

引起:com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:48 个 IllegalAnnotationExceptions 计数

对于元素 {urn:hl7-org:v3}assignedDevice,没有带有 @XmlElementDecl 的 ObjectFactory。 此问题与以下位置有关:在受保护的 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 at com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess at protected com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message. com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message 处的 controlActProcess

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

4

2 回答 2

1

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

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

于 2014-07-21T13:35:39.887 回答
0

What flags are you passing to wsdl2java?

Can you check the generated code for ObjectFactory classes? Check those to see if any methods are annotated with @XmlElementDecl.

于 2010-07-09T18:47:31.990 回答