Как внедрить компонент CDI в получателя сообщений - PullRequest
0 голосов
/ 22 октября 2018

Я хотел бы спросить, как или как наилучшим образом реализовать потребителя, управляемого сообщениями CDI +.Примеры кодов ниже - это фактическая реализация моего приложения.Также я использую apache maven в качестве инструмента для сборки приложения.

ITransactionService.java

public interface ITransactionService{
     void process();
}

TransactionServiceBean.java

@RequestScoped
@TransService
public class TransactionServiceBean implements ITransactionService{
     @Override
     public void process(){
          /logic here
     }
}

TransService.java

@Documented
@Retention(RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER})
@Qualifier
public @interface TransService{

}

JMSConsumerService.java

@MessageDriven
@Transactional
public class JMSConsumerService implements MessageListener {

     @Inject @TransService
     private ITransactionService transactionService;

     @Override
     public void onMessage(Message message){
          transactionService.process();
     }

}

Когда я запускаю приложение в JBoss 6.4, в журналах появляется следующая ошибка, и приложение не запускается на сервере приложений.

Не удалось разрешить компонент CDI для точки инъекции

Может ли кто-нибудь помочь мне в этом?

1 Ответ

0 голосов
/ 25 октября 2018

Почему RequestScoped ?

Я думаю, что Request-Context не будет неявно транспортироваться сообщениями.Поэтому я могу представить, что MessageDriven-Bean не найдет экземпляр, который можно безопасно использовать.Вы пытались использовать @ Зависимый или @ ApplicationScoped ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...