java - 将外部 xsd 类添加到 Apache cxf 生成的服务端点接口
问题描述
我有一个由 CXF 从 WSDL 生成的 SEI“MessageSubmitServicePortType”,用于调用 SOAP 服务。
在调用 WSDL 操作方法时,它需要一个请求类的实例,即“MessageSubmitRequestType”。因此,调用如下所示
endPointObject.submitMessage(requestTypeObject);
在请求类中,Anytype
WSDL 中的一个字段被生成为 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
文件放在这里。
知道如何实现吗?
解决方案
唯一的解决方案是下载和修改 wsdl 文件以供我使用。我刚刚使用标签导入了外部 xsd 并解决了问题。
推荐阅读
- bash - 用于根据时间检查文件的 Bash 脚本
- sabre - 使用相同的 PCC 代码在 Sabre Red 内预订
- javascript - 将对象数组转换为转置的对象数组
- linux - 在 Centos 上构建,安装 PerlIO::gzip 时出现 Zlib.h 错误
- javascript - Vue 和 rails:共享 cookie
- java - 如何在 android/java 中恢复新实例
- android - java.lang.RuntimeException:IllegalAccessException
- python - 在前几行上打印
- java - 在应用程序模块中使用库模块的依赖项
- java - Files.write(Path,byte[]) 上的 java.nio.channels.ClosedByInterruptException