从同一应用程序服务器进行的远程EJB调用是否始终优化为本地内存调用,并且是在此方案中跳过的数据序列化?
换句话说,是否始终使用远程EJB是有效的,从而实现应用程序组件之间的分离,即使两个+ EJB模块部署在同一个容器中也是如此?我正在使用Glassfish。
另外,如果我必须对远程EJB进行运行时查找(我不知道EJB的JNDI名称直到运行时),缓存调用的最佳方法是什么,尽可能少地使用现有的开销应用程序服务器提供的EJB基础结构(因此,没有像Guice这样的其他库,也就是Glassfish已经提供的库)。
答案 0 :(得分:3)
远程服务的参数语义与本地服务的参数语义不同。由于序列化行为,远程服务实际上具有按值传递的语义(即,参数被复制),而本地服务是标准的java传递引用。这不仅仅是一个性能考虑因素,它改变了参数的含义。
因此,由于这种语义差异,我认为容器不能优化对远程EJB接口的调用,就好像它是本地的一样。