我有使用 JBoss 5.1 的 Java EE 5 项目和这样的问题。我必须使用由消息内容产生的字符串对 MDB 中的某些 EJB 进行某种运行时查找。它只是 MDB 中使用的一种服务定位器模式。现在,由于 MDB 在部署后开始使用,我有很多,NameNotFoundException
因为隐式部署顺序在这里不能很好地工作(运行时查找)。你怎么看待这件事?使用 EJB 3.0 是否可以做到这一点?如果可以解决问题,我也可以使用任何供应商特定的东西(JBoss 5.1)。
一些可视化情况的代码片段:
@MessageDriven(mappedName="jms/Queue")
public class MessageBean implements MessageListener {
@Resource
private MessageDrivenContext mdc;
public void onMessage(Message msg) {
final String beanName = // extract somehow the bean's name from 'msg'
final Context ctx = new InitialContext();
final Object obj = ctx.lookup(beanName); // NameNotFoundException
// do something with 'obj'
}
}