#jakarta-ee #ejb #message-driven-bean
#джакарта-ee #ejb #компонент, управляемый сообщениями
Вопрос:
У меня есть веб-приложение, и внутри серверной части я создал MessageDrivenBean, чтобы получать сообщения через JMS.
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/toServer"), })
public class JMSWatcher implements MessageListener {
...
...
public void onMessage(Message message) {
....
}
Но метод onMessage никогда не будет вызван, даже если я отправлю сообщение в очередь / на сервер, как настроено.
Нужно ли мне вызывать этот компонент один раз из клиентского приложения или мне нужно поместить класс в любой конфигурационный XML-файл?
Спасибо, Хауке
PS.: Я поместил некоторое сообщение журнала в конструктор по умолчанию класса JMSWatcher, но оно также не будет отображаться.
Комментарии:
1. Вы, конечно, не вызываете какую-либо часть MDB самостоятельно. Объясните, как вы развертываете свой MDB, на каком сервере, где определена «очередь / toServer»… Это то, что важно
Ответ №1:
Я использую JBoss 7.0.2, поэтому я использую HornetQ в качестве сервера JMS. Я правильно настроил очередь JMS, потому что я могу отправлять сообщения в очередь без каких-либо проблем и могу получать их, если я делаю это по-старому (без MDB).
Я использую Eclipse и создаю проект с помощью maven. У меня есть файл ear, развернутый с модулем сервера и клиента.
Внешний процесс будет отправлять сообщения в очередь (это работает).
Я подумал, что если я сделаю несколько отладочных сообщений внутри конструктора и разверну свой файл ear, то я должен увидеть это сообщение после развертывания один раз.
Мне не нужно помещать MDB в какой-либо XML-файл, такой как ServletContextListener в моем веб-проекте в web.xml ?
Я использую JSF 2, поэтому мне не нужно помещать этот компонент в свой faces-config.xml ? Я не использую faces-config.xml вообще (в данный момент).