java - 如何将 CDI bean 注入到消息驱动消费者
问题描述
我想问一下实现CDI +消息驱动消费者的最佳方式或最佳方式是什么。下面的示例代码是我的应用程序的实际实现。另外,我使用 apache maven 作为应用程序构建工具。
ITransactionService.java
public interface ITransactionService{
void process();
}
事务服务Bean.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 bean
有人可以帮我吗?
解决方案
为什么是RequestScoped?
我认为,Request-Context 不会被消息隐式传输。所以我可以想象,MessageDriven-Bean 将找不到可以安全使用的实例。您是否尝试使用@Dependent或@ApplicationScoped?
推荐阅读
- c# - 将值绑定到 ComboBox WPF
- java - JFrame 表单 - Java 返回:1 | 构建失败
- android - 使用 android spinner 适配器时崩溃
- ios - 如何从 QR 码生成器中删除灰色框架
- angular - 将 typescript 变量传递给 svg image href 属性
- python - 如何将字符串拆分为 2 个单词的不同片段,其中第二个片段的第一个单词重复第一个单词的最后一个单词
- reactjs - 在子组件中反应警告不受控制的组件
- google-apps-script - 0Auth2 问题在我的谷歌表中获取我的谷歌照片库
- python - 在 Django 中使用 select 小部件从 Postgres 数据库中获取数据
- java - 如何修复 java.lang.NullPointerException:Bukkit 插件中的 null?