java - WebServices 客户端 - 动态代理与使用 wconsume 创建的 stub

标签 java web-services jax-ws

我使用 JaxWs 创建了一个 Web 服务。我相信存在两种在客户端使用 Web 服务的方法。

  1. 使用 wconsume 将生成的类作为客户端中的 stub 。
  2. 使用动态代理,这意味着不会有文件作为 stub 发送到客户端。

我认为这种方法的唯一优点是,如果 wsdl 发生更改,则不需要生成 stub 文件。然而,它看起来不太实用,因为我可能需要更改客户端代码中的某些内容并重新编译。我还没有使用过这个技术。我发现this option当我在研究为什么在开发Java客户端时需要生成代理文件但在使用.Net时却没有生成代理文件的原因时。

那么,我有两个问题:

  1. stub 和动态代理技术之间有什么区别?
  2. 为什么.Net客户端不需要代理文件?或者是否有自动生成的文件,但我不知道在哪里可以找到?使用 stub 与动态代理相比,我是否会损失性能或安全性?

最佳答案

1.What's the difference between stubs and Dynamic Proxy tecnich?

JAX-RPC 已弃用。
新标准是 JAX-WS。
JAX-WS 允许程序员调用 Web 服务,就像进行本地方法调用一样。
为此,定义了从 WSDL 到 Java 的标准映射。
此映射将 wsdl:port 定义与称为服务端点接口(interface) (SEI) 的 Java Interface 相关联。
SEI 是 Web 服务端点的 Java 表示形式。
在运行时,JAX-WS 创建一个 SEI 实例,只需在 SEI 上进行方法调用即可使用该实例来进行 Web 服务调用。
现在用于创建 SEI 实例的方法是通过动态代理类。
由于它是动态创建的,因此称为动态代理。
不需要 stub 来实现代理,但 SEI 必须已经实现才能使用。
代理使用/基于由 WSDL 生成的 stub 类来运行。
所以 stub 是先决条件。
因此,正如您在帖子中所说,技术没有分离。
你误解了这个概念

关于java - WebServices 客户端 - 动态代理与使用 wconsume 创建的 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536784/

相关文章:

java - 在运行时从 WSDL 动态调用 Web 服务

java - a.b=c;什么时候会抛出NullPointerException?其中 a、b 和 c 都是对象

java - 我 mock 的对象是我想象的那样吗?想要但未调用错误

c# - 在 Internet 上用很少的客户端保护 WCF 服务的最佳方法

java - Maven:执行wsgen时找不到tools.jar

java - 在 WSTI 和 Jax-ws 之间进行选择

java - 静态值未分配并返回空值

Java - 如何让记录器在关闭 Hook 中工作?

ios - Apple Wallet通过http url通过本地开发

c# - Web 服务函数调用中的 out 参数问题