我有问题。我有一个带有接口的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方法中处理接口的任何提示?
答案 0 :(得分:0)
我认为你在
获得了NullPointerExceptiondownloader.download(csvMessage.getUrl());
尝试像这样注入EJB(例如:在Consumer-Class构造函数上)
try {
Context ctx = new InitialContex();
this.downloader = ctx.lookup("replace_with_ejb_jndi");
} catch (NamingException e) {
//do something
}