java - spring-ws -- 如何从 WSDL 创建 java 接口(interface)?

标签 java spring soap wsdl spring-ws

我正在 gradle 中使用 spring-ws 创建一个 WSDL-first Web 服务。

我看过的一些例子 (例如https://spring.io/guides/gs/producing-web-service/) 看起来他们只会从 XSD 模式生成 java 类, 但是 WSDL 服务操作没有 java 接口(interface)(或抽象类)?

此外,在 spring-ws 文档中,它说“...在 Spring-WS 中,不需要手动编写 WSDL ...”。

  • spring-ws 不会为实际服务本身生成任何 java 接口(interface)或类,这一点是否正确理解?

  • 是否可以覆盖此默认行为并强制它这样做?

我想确保完整的 WSDL 正确且完整地实现...

最佳答案

使用 spring-ws,您可以首先构建契约 WS,尽管没有必要构建 WSDL,因为它可以动态生成它。

对于java对象,spring-ws允许您使用jaxb2或类似的方式编码/取消编码。这样,您可以从 XSD 获取 java 类,但此代码生成是由编码器生成的。

从服务器的角度来看,您创建与 WSDL 操作匹配的 WS 端点。端点被注释并绑定(bind)到请求/响应 java 对象。因此,spring 可以动态生成 W​​SDL,但您也可以使用自己的 WSDL。

从客户端的角度来看,您需要一个WSTemplate来检索WSDL(静态或动态,它不介意)。使用这种方式,WSTemplate 确保您可以调用所有服务器端点,而无需实现客户端 stub 或生成的代码。

我更喜欢使用静态 WSDL,因为动态生成无法确保您的 WSDL 在您升级 Spring 等时发生更改,这可能会破坏与客户端的兼容性。

但是,在开发过程中,为了简单起见,我使用动态 WSDL。一旦获得了所需的服务,我就会获得动态生成的 WSDL(如果需要则可自定义)并将其用作静态服务。该 WSDL 对于所有端点都是完整的。

希望对你有帮助!

关于java - spring-ws -- 如何从 WSDL 创建 java 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35653487/

相关文章:

java - 为什么我的Java程序中的好友列表不显示?

java - 无法使用 jasypt 从属性文件加密用户名/密码

soap - 寻找 Java 库/API 来为带有附件的 SOAP 消息实现 WS-Security(SwA)

python - 在Python中打印xml数据?

perl - 将 authHeader 添加到 Perl SOAP::Lite 请求

java - 从数组列表调用方法

java - 来自克隆的 GitHub Java(带有 jni 和 C)存储库的 Netbeans Maven 项目

java - 加载带有 exif 和/或损坏的元数据的 jpeg 图像

java - 如何检查所有 Spring 占位符是否存在?

java - 导出延迟初始化的 bean(实现 SelfNaming 并使用 ManagedResource 注释进行注释)会给出 IllegalStateException