在onMessage方法中使用接口(Java EE + JMS)

时间:2015-02-12 14:04:57

标签: java java-ee jboss ejb jms

我有问题。我有一个带有接口的Consumer-Class,它被声明为@EJB:

/**
 * A downloader
 */
@EJB
private IDownloader downloader;

我还有一个onMessage-Method,看起来类似于:

@Override public void onMessage(Message message) {
try {
    ObjectMessage messageObject = (ObjectMessage) message;
    CSVMessage csvMessage = (CSVMessage) messageObject.getObject();
    downloader.download(csvMessage.getUrl());
} catch (JMSException e) {
    throw new RuntimeException(e.getMessage(), e);
}
}

执行时,我收到以下消息:

ERROR [org.jboss.as.ejb3] (Thread-3 (HornetQ-client-global-threads-9332852)) javax.ejb.EJBTransactionRolledbackException: Not Found
ERROR [org.jboss.as.ejb3.invocation] (Thread-3 (HornetQ-client-global-threads-9332852)) JBAS014134: EJB Invocation failed on component Downloader for method public abstract java.lang.String com.packagename(java.lang.String): javax.ejb.EJBTransactionRolledbackException: Not Found

如何在onMessage方法中处理接口的任何提示?

1 个答案:

答案 0 :(得分:0)

我认为你在

获得了NullPointerException
downloader.download(csvMessage.getUrl());

尝试像这样注入EJB(例如:在Consumer-Class构造函数上)

try {
    Context ctx = new InitialContex();
    this.downloader = ctx.lookup("replace_with_ejb_jndi");
} catch (NamingException e) {
  //do something
}