是否可以在同一台机器上部署的多个EAR应用程序之间共享对象?
我们有多个充当微服务的核心服务。它不是严格的ms体系结构,但无论如何,每个服务都部署为单独的EAR。请求流(用例)需要命中许多应用程序(EAR)才能完成该过程。如何在不同的ejb应用程序之间传递“用户数据对象”?
@ApplicationScoped CDI上下文仅在一个EAR中可见...
是否有可以用于应用容器共享内存之类的东西?
答案 0 :(得分:1)
许多解决方法。这完全取决于您对EE的熟悉程度以及会话有效负载的大小。从默认的角度(没有太多项目细节),您可以:
这些是我能想到的最明显的解决方案,不会违反EE标准。我确信还有其他可以利用的异国情调或第三方解决方案。
腔体清空器
答案 1 :(得分:0)
在一台应用程序服务器中部署的所有应用程序之间的内存是共享的(在vm上),但是每个应用程序都有不同的类加载器,因此,如果您获得(通过JNDI查找或其他机制)由另一只耳朵创建的对象,将获得classcastexception
除非将类放在系统库(父类加载器)中,否则不同耳朵之间的调用服务始终是远程的(按值调用),并且不同耳朵之间的对象共享不可能。应用程序类加载器)
有关更多信息,请参见下面的链接(它描述了weblogic中的类加载,但基本概念在不同的应用程序服务器中相同)
https://docs.oracle.com/cd/E13222_01/wls/docs100/programming/classloading.html