如何从JBossAS7中的消息驱动bean访问Springbean

如何从JBossAS7中的消息驱动bean访问Springbean,spring,ejb,jboss7.x,Spring,Ejb,Jboss7.x,我想从我的消息驱动bean(MDB)调用Springbean(一个@Component),但在获取对它的引用时遇到问题。我尝试了一个实现org.springframework.context.ApplicationContextAware的类,该类将Spring应用上下文存储在类MyAppContext的静态字段中。然后从MDB访问MyAppContext中的静态字段。但是MyAppContext是从不同的类加载器加载的。Spring应用程序上下文在web模块类加载器上下文中设置正确,但在MDB

我想从我的消息驱动bean(MDB)调用Springbean(一个@Component),但在获取对它的引用时遇到问题。我尝试了一个实现
org.springframework.context.ApplicationContextAware
的类,该类将Spring应用上下文存储在类
MyAppContext
的静态字段中。然后从MDB访问
MyAppContext
中的静态字段。但是
MyAppContext
是从不同的类加载器加载的。Spring应用程序上下文在web模块类加载器上下文中设置正确,但在MDB的类加载器上下文中,它为null

我是否可以指示JBoss对web应用程序和MDB使用相同的类加载器

或者有没有比在静态字段中存储Spring应用程序上下文更好的方法


谢谢你的建议

上下文的静态持有者并不是一个好主意。为了使您的bean可以在java EE环境中应用于其他应用程序,您应该考虑使用JNDI。 不幸的是,没有现成的简单JNDI导出器,但是自己编写一个很容易,如本文所示:

不过,您可能想看一看

一旦您的bean绑定到JNDI中的名称,就可以在消息bean中使用标准CDI引用它们,而不用担心类加载问题。

为什么不使用“ClassPathXmlApplicationContext”来加载和查找MBean中所需的Spring bean呢