Web服务客户端 - 使用consume创建的动态代理与Stub

时间:2011-06-30 14:58:45

标签: java web-services jax-ws

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

  1. 使用wconsume e将生成的类作为存根添加到客户端。
  2. 使用动态代理,whitch意味着,没有文件可以作为存根发送到客户端。
  3. 我认为这种方法的唯一优点是,如果wsdl发生了变化,就不需要生成存根文件了。但是它看起来不太实际,因为我可能需要在客户端代码中更改某些内容并重新编译。我还没有使用这个技术。当我在开发Java客户端时需要生成代理文件的原因时,我发现this option,但是当我使用.Net时我没有。

    然后,我有两个问题:

    1. 存根和动态代理tecnich有什么区别?
    2. 为什么.Net客户端不需要代理文件?或者是否自动生成文件,我不知道在哪里可以找到?使用存根与动态代理时,我是否会失去性能或安全性?

1 个答案:

答案 0 :(得分:3)

  

1.存根和动态代理tecnich有什么区别?

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