远程调用weblogic中的ejb

之前从未用过ejb,在网上看一个很简单的例子:HelloWord。现有一些疑问:客户端是通过什么标识符去获得远程接口HelloWord的,这个标识符是怎样指定的呢?(He... 之前从未用过ejb,在网上看一个很简单的例子:HelloWord。现有一些疑问:客户端是通过什么标识符去获得远程接口HelloWord的,这个标识符是怎样指定的呢?
(HelloWord)context.lookup("xxx")这是客户端代码,那么HelloWorld是我定义的远程接口,我在客户端能使用HelloWorld?还是我要在客户端定义一个一模一样的Helloword接口呢
展开
 我来答
jamxval
推荐于2017-09-15 · TA获得超过6821个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1364万
展开全部
  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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式