gpt4 book ai didi

java - WSDLS 由 servlet 容器在后台生成?

转载 作者:行者123 更新时间:2023-12-01 11:10:00 28 4
gpt4 key购买 nike

最近看了文章http://www.ibm.com/developerworks/library/ws-noide1/这促使我回顾过去十年左右 SOA 的发展历程。这篇评论是一次很好的复习,但我很快就发现了我的知识中的一些差距。

我特别想知道,并且无法找到关于WSDL 文件是否必要 无论哪种协议(protocol)、范例或 API<的明确答案/strong> 用于提供网络服务。 这些文件的创建和传播是否由tomcat、jetty等servlet容器在后台完成

例如,本质上,HTTP 协议(protocol)本身不需要 WSDL,这使我相信 WSDL 是与 SOAP 紧密耦合的规范,并且也许 EJB、Spring 等不需要它。

我知道有人问过类似的问题,例如 JSON, REST, SOAP, WSDL, and SOA: How do they all link together

但我一直无法找到这个具体问题的明确答案。

最佳答案

如果您仔细研究一下 Java 规范,您就会清楚什么是 WSDL。

当您用 Java 构建 Web 服务时,您有多种方法可以实现。

  • SOAP,规范 Jax-WS:这个标准有点严格。为了与其沟通,你必须遵守契约(Contract)。该契约称为 WSDL,是一个 XML,定义如何到达 WS、需要哪些参数以及它们的类型。该文件由服务提供,大多数现代 IDE 都会生成它,但您必须将其提供给您的客户端,以便它可以调用尊重契约(Contract)的 WS。
  • REST,规范 Jax-RS:这个标准远没有那么严格,因为没有契约(Contract)。这通过特定的 HTTP 方法(GET、POST、PUT、DELETE)提供 URL。要调用这种 WS,只需调用它,您就会看到会发生什么。
  • 队列 JMS:这与其他两个有所不同,但对我来说似乎很重要,因为它提供了一种创建可靠、解耦和异步消息传递的方法。它基于连接工厂来处理通信。

这些标准已在当今大多数主要技术中实现。 Java EE 及其 EJB 已经实现了这三个功能,Spring 也是如此。

SOA 现在提供了多种通信方式,具体取决于您的需求。

希望对您有所帮助,如有需要,请随时询问。

编辑:

为了解释用例,我将尝试建立一个示例...这是一种艰苦的练习,并不完美,但我希望它会对您有所帮助。

考虑一下,您为房屋卖家工作。您对 WS 进行了三种不同的调用:1. 您在网站上确认销售,2. 您在目录中搜索,3. 您通过内联网上的一条小消息通知您的老板。

我明确指出,使用三种不同类型的 WS 并不是强制性的。

  1. 此操作对于您的工作流程非常重要。数据是发送必须到达。您必须确保尊重对您的期望WS。客户端和服务器端必须完美匹配。您将使用 SOAP,因为它们之间存在特定的契约双方。
  2. 为此,您不需要具体且严格的契约(Contract)。搜索很简单,不需要具有定义参数的结构。只需获取数据并将其打印在屏幕上即可。这里 REST 可能更合适,因为它更容易设置,并且如果需要修改,客户端无需修改合约。
  3. 对于消息传递,您只需发送消息即可。 JMS 是等待“消息”的队列。这些消息是将异步使用的请求。消息将被存储起来,等待消费者按队列顺序 (FIFO) 获取它们。

生成 WSDL 是您的任务。它将根据您的 WS Java 代码生成一个 xml 文件。请注意,相反的情况也是可能的,如果您有 WSDL,您可以从中生成 Java(请参阅 this 。大多数时候,您有一个与 WSDL 文件相对应的 url,以便可以从您的客户端访问它。

您可以从 IDE 生成 WSDL。但我不确定使用 Maven 是否是正确的方法。 WSDL 是您的契约(Contract),它可能是您 WS 的基础。使用 IDE 的一代只是让您的生活更轻松的一种方式,但最终 WSDL 可能不会发生太大变化。如果确实如此,那么 SOAP 可能不是您所需要的。 REST 可能更加“敏捷”。

查看这些链接以使用 IDE( IntelliJEclipse )或使用 external tool WSGEN 手动生成。 .

关于java - WSDLS 由 servlet 容器在后台生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491338/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com