首页 > 解决方案 > 将外部 xsd 类添加到 Apache cxf 生成的服务端点接口

问题描述

我有一个由 CXF 从 WSDL 生成的 SEI“MessageSubmitServicePortType”,用于调用 SOAP 服务。

在调用 WSDL 操作方法时,它需要一个请求类的实例,即“MessageSubmitRequestType”。因此,调用如下所示

endPointObject.submitMessage(requestTypeObject);

在请求类中,AnytypeWSDL 中的一个字段被生成为 Java 中的 Object 属性。

我在上述对象类型属性中设置从外部 xsd 生成的类的实例。

所以,简而言之,

requestTypeObject.setAnytype(JAXBElelment<ExternalXSD.someclass>)

此 JAXBElement 是使用从外部 XSD 生成的 ObjectFatory 类创建的。

但是,在执行时我收到一个javax.xml.bind.JAXBException externalxsd.someclass is not known in this context错误。

我知道这可以通过添加@XMLSeeAlso到端点类来解决,但我不想这样做,因为这些类是在运行时生成的。

我也尝试使用 binding.xjb 文件添加注释,但它似乎没有在现有注释中附加指定的类。如果有帮助的话,我可以把我的pom.xml.xjb文件放在这里。

知道如何实现吗?

标签: javasoapjaxbcxfmicroservices

解决方案


唯一的解决方案是下载和修改 wsdl 文件以供我使用。我刚刚使用标签导入了外部 xsd 并解决了问题。


推荐阅读