2

编辑问题以提高清晰度。

我正在尝试学习基于 SOAP 的 Java Web 服务。我使用 @WebService 注释创建了一个简单的 Web 服务。我在本地机器上发布了它,并在本地机器上使用了该服务。我发现 WSDL 文件是自动生成的,并且 SOAP 消息在“幕后”。我只能通过 TCP/IP 监视器跟踪 SOAP 消息。

后来我发现 Java SOAP API 提供了自己创建 SOAP 消息并使用 MessageFactory 和 SOAPMessage 等类/接口传输它们的选项。

我的问题是,如果 WSDL 和 SOAP 消息是自动生成和处理的,为什么我们需要 SOAP 处理程序来使用 Java SOAP API 手动创建和发送 SOAP 消息?

4

2 回答 2

3

我的问题是,如果 WSDL 和 SOAP 消息是自动生成和处理的,为什么我们需要 SOAP 处理程序来使用 Java SOAP API 手动创建和发送 SOAP 消息?

因为您可能希望更好地控制 SOAP 通信、构建 SOAP 消息等。当提到 MessageFactory 和 SOAPMessage 时,您实际上指的是SAAJ。与 JAX-WS 相比,SAAJ 在较低级别上运行,具有这种方法带来的所有优点和缺点。从Java 摇摆

JAX-WS 与 SAAJ

从实际的角度来看,使用 SAAJ 意味着您不使用诸如“wsimport”或“wsdl2java”之类的工具。这些是与 JAX-WS 一起使用的,并且是客户端可以生成域对象并几乎就像根本不使用 Web 服务一样操作的方法。使用 SAAJ,您没有服务的域视图。你真的在和管道打交道。使用 JAX-WS 进行开发可以更快更容易,并且通常不会导致您失去任何控制。但是 JAX-WS 是一个便利层,知道如果您使用 SAAJ 的某些命令,您将准备好执行 WSDL 接口要求您做的任何事情,这会让人感到欣慰。

就个人而言,我总是会选择 JAX-WS。

于 2012-08-28T11:10:35.763 回答
0

You don need to use Java SOAP API explicitly when you use JAX-WS. But you choose to write SOAP messaging applications directly, then these APIs come into picture.

An hypothetical example would be that you want more control over the SOAP message parsing. You do not want to process the entire XML but a part of it using xpath.

于 2012-08-28T11:17:45.187 回答