我正在使用JAXB和CXF创建一个WSDL第一个Web服务.我不拥有WSDL,所以我不能修改它.我使用
ftp://ftp.ihe.net/TF_Implementation_Material/ITI/wsdl/PIXManager.wsdl作为我的WSDL.我用CXF 2.3.0生成Java类.
Java类生成就行了,但是当我尝试在Web应用程序中运行它时,我收到一个错误
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 17 counts of IllegalAnnotationExceptions
17个数字是格式
There's no ObjectFactory with an @XmlElementDecl for the element {urn:hl7-org:v3}assignedDevice. this problem is related to the following location: at protected javax.xml.bind.JAXBElement org.hl7.v3.QUQIMT021001UV01AuthorOrPerformer.assignedDevice
当我去上课时,即QUQIMT021001UV01AuthorOrPerformer,看看分配的设备,我看到这个
@XmlElementRef(name = "assignedDevice",namespace = "urn:hl7-org:v3",type = JAXBElement.class) protected JAXBElement<COCTMT090300UV01AssignedDevice> assignedDevice;
当我看到包的ObjectFactory,我看到这一点
private final static QName _COCTMT090303UV01AssignedDeviceAssignedDevice_QNAME = new QName("urn:hl7-org:v3","assignedDevice");
我所有的17个错误都是类似的.为了让我的服务工作,我可以在代码或运行期间做什么?
解决方法
您在运行时使用什么Java版本?当使用Java 6运行时,我与OTA架构有类似的问题.通过对Maven配置进行以下更改,消除了这个问题:
>使用JAXB impl 2.1.*(而不是2.2)提供的范围,以匹配Java 6中包含的JAXB版本.>使用JAX-WS 2.1(而不是2.2)来匹配Java 6和JAXB 2.1.x.>将选项frontEnd添加到Maven cxf-codegen-plugin插件,并将其设置为jaxws21(或者如果在命令行中使用wsdl2java,请使用“-fe jaxws21”选项).