【问题标题】:How to implement SOAP Endpoints that receive SOAP XML (SAAJ?) Instead of generated objects using CXF如何实现接收 SOAP XML(SAAJ?)而不是生成的对象(通过 CXF)的 SOAP 端点
【发布时间】:2022-01-23 05:12:37
【问题描述】:

我们目前已经使用 CXF 实现了 SOAP 端点(Spring Boot)。按照契约优先的方式,我们提供一个 WSDL,从中生成 Java 对象和服务(cxf-codegen-plugin),最后实现服务接口。

这一切都非常好和简单,但是我们只需要 SOAP XML 或相应的 DOM 树。不仅不需要转换为 Java 对象,我们还必须将它们转换回 XML 并丢失原始 XML 中的一些信息

据我了解,SAAJ(SOAP with Attachments API for Java)就在这里,还是我遗漏了什么?至多所有关于 SAAJ 的资源都相当陈旧和“低级”。我找不到这种方法的好资源。

此外,我们希望尽快将新服务实现为微服务,目前正在审查 QuarkusApache Camel。但是,我找不到从 WSDL 创建相应端点的(简单)方法,然后我们通过它接收 SOAP 消息作为纯 XML / DOM 树。

也许你有一些有用的提示,无论是 SAAJ 是要走的路,还是那里有更好的 API!也许我现在被高级 API 宠坏了 ;-) 你有什么进一步的提示可以帮助我吗?

最好的问候 圣诞节快乐

【问题讨论】:

    标签: java soap apache-camel cxf saaj


    【解决方案1】:

    在 jax-ws 中,可以在服务器端使用基于 Web 服务 Provider 的端点完成消息级访问,在客户端使用 Dispatch 客户端。

    基于 Web 服务 Provider 的端点为基于 Java 服务端点接口 (SEI) 的端点提供了一种动态替代方案。与抽象 Java 对象及其 XML 表示之间的转换细节的基于 SEI 的端点不同,Provider 接口使您能够直接在 XML 消息级别访问内容,而无需 JAXB 绑定。基于 web 服务 Provider 的端点可以分别使用 javax.xml.ws.Provider 或 com.sun.xml.ws.api.server.AsyncProvider 接口同步或异步实现。

    详情请见https://cxf.apache.org/docs/provider-services.html

    【讨论】:

    • 谢谢!显然我没有足够仔细地阅读 CXF 文档。现在我只需要弄清楚如何在 Quarkus 中使用整个东西......目前我的端点尚未成功发布......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2011-04-04
    相关资源
    最近更新 更多