如何将 spring bean 绑定到 JNDI,以便可以从不同的 war 访问它?

How to bind a spring bean to JNDI so that it can be accessed from a different war?

我在 wildfly 中部署了一个 WAR 和一个 EAR。 ear 有一个 spring 启动应用程序,它启动一个特定的 bean。我希望该 bean 实例在 jndi 中可用,例如

java:/mySpringBean

这样我就可以从 WAR 中进行查找(它也有一个 spring 上下文)。 目标是重用从 EAR spring 引导实例化的实例。

首先,我不确定这是否可能, 我试过 https://konstantinpavlov.net/blog/2009/01/01/how-to-export-spring-managed-bean-to-jndi/ 但它似乎没有工作,在我从上面添加代码后,我没有在 JNDI 视图下的 wildfly 管理控制台中看到一个条目。

选择您的 spring 应用程序正在引导的 classes 之一。在我的例子中,有一个 starupClass 会在应用程序启动时 运行 。然后我将 bean @Autowired 到 class。获取 IntialContext 并绑定 bean。

上下文ctx = new InitialContext(); ctx.bind("mySpringBean", mySpringBean);