我使用 JaxWs 创建了一个 Web 服务。我相信存在两种在客户端使用 Web 服务的方法。
- 使用 wconsume 将生成的类作为客户端中的 stub 。
- 使用动态代理,这意味着不会有文件作为 stub 发送到客户端。
我认为这种方法的唯一优点是,如果 wsdl 发生更改,则不需要生成 stub 文件。然而,它看起来不太实用,因为我可能需要更改客户端代码中的某些内容并重新编译。我还没有使用过这个技术。我发现this option当我在研究为什么在开发Java客户端时需要生成代理文件但在使用.Net时却没有生成代理文件的原因时。
那么,我有两个问题:
- stub 和动态代理技术之间有什么区别?
- 为什么.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/