java - 远程 EJB3 调用

标签 java ejb-3.0

来自同一个应用程序服务器的远程 EJB 调用是否始终优化为本地内存调用,并且在这种情况下是否跳过了数据序列化?

换句话说,即使在同一个容器中部署了两个以上的 EJB 模块,是否始终有效地使用远程 EJB,从而实现应用程序组件之间的解耦?我正在使用 Glassfish。

此外,如果我必须执行远程 EJB 的运行时查找(直到运行时我才知道 EJB 的 JNDI 名称),缓存调用的最佳方法是什么,尽可能少地使用现有的开销应用服务器提供的 EJB 基础设施(因此,没有像 Guice 这样的额外库,正是 Glassfish 已经提供的库)。

最佳答案

远程服务的参数语义与本地服务的不同。远程服务,由于它们的序列化行为,有效地具有按值传递语义(即复制参数),而本地服务是标准的 java 按引用传递。这不仅仅是性能方面的考虑,它改变了参数的含义。

因此,我不认为容器可以优化对远程 EJB 接口(interface)的调用,就好像它是本地接口(interface)一样,因为这种语义差异。

关于java - 远程 EJB3 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1994316/

相关文章:

javascript - Javafx 调用 javascript 在 webview 中执行 java 函数不起作用

java - 如何替换字符串中的变音符号?

jakarta-ee - 如何 MBean 依赖于 JBoss 7 中的 EJB

java.lang.ClassCastException - 将 WAR 部署到 GlassFish 3.1.2。 - JNDI 查找可能无效?

java - EJB内部Thread.sleep的解决方案

java - 获取 java.io.FileNotFoundException(访问被拒绝)

java DOM 在一行中解析 XML

java - 在服务器上运行java应用程序

java - 如何查询数据库中未映射到实体的结果集(JPA、JBoss)

java - 我可以在 EJB 3 容器内的类路径中动态发现 xml 文件吗?