我正在使用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并查看字段assignedDevice时,我看到了这个
@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个错误都是相似的。在我的codegen或运行时期间,我可以做些什么来使我的服务工作?
答案 0 :(得分:3)
您在运行时使用的Java版本是什么?在使用Java 6运行时,我遇到了与OTA模式类似的问题。我通过对Maven配置进行以下更改来消除此问题:
provided
作用域的JAXB impl 2.1。*(而不是2.2)来匹配Java 6中包含的JAXB版本。frontEnd
添加到Maven cxf-codegen-plugin
插件并将其设置为jaxws21
(或者如果在命令行中使用wsdl2java
,请使用“-fe jaxws21
}“选项”。答案 1 :(得分:1)
生成类时,还会生成一个名为jaxb.properties的文件。确保应用程序在运行时可以访问此文件。 我有同样的问题,这是由于maven打包:maven将不包括在src / main / java树下面的包资源文件(如jaxb.properties),除非特别指示这样做。我使用带有add-resource目标的org.codehaus.mojo:build-helper-maven-plugin做到了这一点。 希望这有帮助
答案 2 :(得分:0)
我面对这个类似的错误,原因是webservices生成的存根java类之间存在冲突。
如果上述答案不起作用,请尝试查找冲突。
一次添加一个存根并逐步添加。
希望有所帮助