Liferay消息监听器(消息总线)类路径

时间:2016-06-15 09:11:15

标签: spring liferay classloader

我在Liferay(CE 6.2.5 GA6)中实现了一个消息监听器,以便在外部DMS中异步存储创建/更新的DLFileEntries(调用外部WS来存储它们)。

我创建了一个JAR文件,其中包含我的WS类的接口,该类位于tomcat的lib / ext文件夹中。

我在这个JAR文件中有一个ServiceLocator类,它在我的webapp的Spring上下文中初始化。服务定位器的初始化似乎工作正常,我能够访问其他Web应用程序中的服务实例。但是,当我尝试从MessageListener类访问服务定位器服务时,instances为null。

据我所知,MessageListener类是使用spring-messaging.xml文件通过web.xml portalContextConfigLocation context-param实例化的。我怀疑消息监听器运行的时间与我的webapp有不同的类加载器。这就是为什么我试图打印消息监听器运行的线程的类路径的原因。我很惊讶类路径不包含来自tomcat的lib / ext文件夹的任何JAR文件。

这是故意还是错误?有没有人遇到过类似的问题?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我想我找到了解决方案。好像我只需要将messaging-spring.xml上下文初始化从web.xml中的portalContextConfigLocation上下文参数更改为contextConfigLocation,如下所示:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-context/portlet-application-context.xml, /META-INF/messaging-spring.xml</param-value>
</context-param>

消息监听器与我的webapp的其余部分在同一个类加载器中。

相关问题