2016-06-15 3 views
0

Я реализовал прослушиватель сообщений в Liferay (CE 6.2.5 GA6) для асинхронного хранения созданных/обновленных DLFileEntries во внешней DMS (вызывая внешний WS для их хранения).Liferay messageener (message bus) classpath

Я создал файл JAR, содержащий интерфейс для моего класса WS, который находится в папке lib/ext tomcat.

У меня есть класс ServiceLocator в этом JAR-файле, который инициализируется в Spring-контексте моего webapp. Инициализация локатора службы, похоже, работает очень хорошо, и я могу получить доступ к экземплярам службы в других веб-приложениях. Однако, когда я пытаюсь получить доступ к службам локатора служб из класса MessageListener, instannces имеют значение NULL.

Как я понимаю, классы MessageListener создаются с использованием файлов spring-messaging.xml через web.xml portalContextConfigLocation context-param. Я подозреваю, что thready, в котором работает прослушиватель сообщений, имеет другой загрузчик классов, чем мой webapp. Вот почему я попытался напечатать путь к потоку, в котором работает прослушиватель сообщений. Я был удивлен, что classpath не содержит никакого JAR-файла из папки lib/ext tomcat.

Является ли это целью или ошибкой? Кто-нибудь работал в подобной проблеме?

Любая помощь приветствуется.

+0

Просто любопытно, используете ли вы комплект tomcat для GA6 или вы загрузили этот кота отдельно? – Paras

+0

Привет, я использую пакет Tomcat – shimon001

ответ

0

Я думаю, что нашел решение. Похоже, что я просто должен был изменить контекст сообщений-spring.xml intialization из portalContextConfigLocation контекста паров в web.xml для 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.

Смежные вопросы