【发布时间】:2013-03-27 15:42:33
【问题描述】:
我在两个独立的应用服务器上有两个 Java EE 应用程序。其中一个已经包含一个工作的 EJB。我希望能够通过使用 JAX-WS Web 服务从其他应用程序与这个 EJB 进行通信(通信必须在不同的应用程序服务器和不同的服务器版本之间工作,所以远程 EJB 调用是没有选择的)。将服务器 api 暴露给客户端应用程序是没有问题的。 服务端很清楚,添加@Webservice注解似乎效果很好。但我想知道构建客户端的最佳方法是什么:我真的不想从 wsdl 生成客户端存根(在我的例子中,它本身是由容器从 ejb 代码生成的)并打包所有这些生成的类进入客户的耳朵 - 但这似乎是我可以使用 @WebServiceRef 注释的唯一方法。
规范不推荐使用 javax.xml.ws.Service 的静态方法(例如 service=Service.create() 和 service.getPort())自己制作动态代理的替代方法和“容器提供者不需要支持使用这些方法创建的托管服务实例”。 但这正是某事。我想使用的:
有没有办法在我的代码中注入动态代理,由应用服务器管理?或者是使用生成的客户端存根类完成托管 Web 服务客户端实例的唯一方法?
【问题讨论】:
-
如果您尝试与两个 EAR 中的两个 EJB 通信,通过将 bean 公开为 MessageDriven bean 来使用 JMS 提供程序进行通信不是更好吗?它将为您节省很多必须设置 Web 服务的麻烦,并且有效负载也会更少。
-
为什么几乎每个人都讨厌拥有 WSDL 文档,但仍然需要 SEI 接口和其他类?
标签: java web-services jakarta-ee jax-ws