我从J2SE应用程序调用远程无状态会话bean,并希望缓存对会话bean的引用,以降低查找成本。这个可以吗?
在EJB2中,ServiceLocator模式通常用于将查找缓存到远程资源,但EJB3没有单独的EJB Home(通常是缓存的)和Remote对象。
谷歌搜索,一个常见的答案是使用EJB3注入,但由于我正在从J2SE客户端调用远程EJB服务器,我不能使用注入。
答案 0 :(得分:2)
是的,可以缓存它们。但是我不知道是否定义了行为,如果你有一个缓存的引用并且服务器在它下面重新启动会发生什么。您可以测试该方案,但行为可能因容器而异。
答案 1 :(得分:1)
如果服务器消失,您的引用将失效。
对于正常生命周期中的缓存,这应该没问题。我已经在EJB2和EJB3中做了多年,从来没有遇到过问题。一般来说,我只有一个静态的“LookupServices”类,它只是查找主页,或者如果它已经存在则返回现有的类 - 并将其存储在地图中。