同一 JVM 中的远程 EJB 调用与本地 EJB 调用性能

Remote EJB call vs Local EJB call performance in same JVM

我试图找出在同一 JVM 中通过其本地接口/远程接口调用服务时在性能上是否存在任何差异。

基于这篇文章: http://www.onjava.com/pub/a/onjava/2004/11/03/localremote.html?page=last&x-showcontent=text 本地调用应该快一点,尤其是在收集对象的情况下。

根据我的测试,我找不到两者之间的大区别,但也许我是用少量数据尝试的。

但无论如何我想知道当我们在同一个 JVM 中时通过其远程接口调用服务是否有任何失败,因为在我的项目中我们正在生成两个 local/remote 接口但是没有真正的远程调用,客户端和服务在同一个 JVM 中,我正在考虑清理混乱并删除不必要的生成的远程视图,因为人们开始无缘无故地使用两者。

谢谢!

  • 远程接口的执行方式因容器而异,您不能依赖它的执行类似于本地接口(尽管大多数容器会意识到您实际上正在访问 'local' 远程接口)。可能会有差异,比如为远程调用生成一个新线程,通过引用传递值(例如,您可以在 jboss 中为 in-vm 远程调用打开它)等
  • 序列化总是很慢,应该尽可能避免
  • 基本上不要这样做,绝对没有理由使用远程接口,除非您计划将您的应用程序拆分成多个 EAR