为什么应用服务器需要存根才能进行远程调用?

时间:2011-02-26 17:41:53

标签: java classloader application-server

这不是一个问题,而是讨论......我不知道它是否是正确的地方......

As you know, we can write our own java classloaders that can load classes over the network

那么,为什么应用服务器不只是这样做?为什么当我们在另一个应用服务器内部远程调用远程方法时,为什么我们必须有存根来返回类型和参数呢?

我认为应用程序服务器可以使用NetworkedClassLoader等内容加载这些返回类型和参数远程处理。

2 个答案:

答案 0 :(得分:4)

代理模式的整个想法是:

  1. 保护客户端免受他们正在与之交谈的对象不在其地址空间中的事实,它位于网络上其他位置的远程服务器上。
  2. 将工作从客户端卸载到服务器。
  3. 将操作集中到单个服务中,任何可以访问网络的客户端都可以共享该服务。

答案 1 :(得分:1)

我不打算讨论,只是为了表达我的观点。

应用服务器的重点是在服务器上完成工作。如果在客户端加载类EJBImplementation并调用它的一些方法,那么将在客户端完成工作。此外,要正常工作EJBImplementation必须拉出一大堆依赖关系,对本地数据库进行一些调用,天知道还有什么。因此,在大多数情况下,这样的处理不能在客户端实际完成。

因此,我们为EJBImplementation创建了一个存根(proxy是术语),它将方法调用通过网络传递给服务器。