如何调用远程WEBLOGIC上的EJB

如题所述

1、确实是在客户端使用 HelloWorld 接口,服务器端本来有一个实现类能为我们提供服务,但我们要意识到我们在客户端拿到的 HelloWorld 对应的对象实例的实现类是一个 Stub,Stub 只负责收集参数并发起远程网络连接去把参数和要调用的类名和方法发送到对方服务器,服务器收到请求的类和方法名后就会根据它的服务注册表找到 HelloWorld 对应的实现类(包括实现类和 Skeleton, Tie 之类的辅助类的支持)然后调用。并把结果同样的通过网络发送回去。
2、接口本来是要分发到客户端的,这个过程是手工做的,比如把它打包到客户端的 jar 中,所以在开发 EJB 时我们有一个 EJB Client 项目,它的作用就是把接口及部署过程生成的 Stub 之类的放入其中打包成 jar,它同时给服务端和客户端使用,而服务端 ejb 项目部署时生成 Skeleton 或 Tie 这个却只是服务端用的,不需要复制到客户端。服务端 EJB 项目和客户端项目(比如一个 web程序)同时依赖 ejb client 项目。把 EJB 接口和实现类放在同一个 EJB 项目中的做法是不推荐的,我们应该习惯面向接口编程避免向客户端展示太多实现细节而意外地增加了耦合程序。
3、客户端获得远程 HelloWorld 的标识就是这个 EJB 的全局 JNDI 名称。远程连接到当前容器(当前服务器进程)之外的 EJB 时我们使用全局 JNDI 名并且需要配置额外的 InitialContext 连接参数而不是直接 new InitialContext().lookup(...),而当在同一个容器中的其它远程 EJB 时我们可以配置资源引用。了解:http://blog.csdn.net/humanity/article/details/5527239
温馨提示:答案为网友推荐,仅供参考
相似回答