У меня есть проект Java EE 5 с использованием JBoss 5.1 и проблема вроде этого. Мне нужно выполнить поиск во время выполнения для некоторых EJB в MDB, используя строку, которая получается из содержимого сообщения. Это просто своего рода шаблон локатора сервисов, используемый в 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 name from 'msg'
final Context ctx = new InitialContext();
final Object obj = ctx.lookup(beanName); // NameNotFoundException
// do something with 'obj'
}
}