【发布时间】:2014-06-05 22:03:27
【问题描述】:
我正在尝试运行 EJB 3.2 规范第 281 页中的示例,但它会产生错误。简而言之,我在 Glassfish 4 中创建了一个队列 jms/StockQueue,我可以使用 @Resource(lookup = "jms/StockQueue") 注入对它的引用。所以我的无状态bean MyBean 成功获取到队列的引用。
@Stateless
public class MyBean {
@Resource(lookup = "jms/StockQueue")
private Queue queue;
public void sendMessage() {
System.out.println(queue);
}
}
但是规范中的 StockServiceBean 没有获得对队列的引用。
@Resource(name = "jms/StockQueue", type = javax.jms.Queue.class)
@Stateless
public class StockServiceBean {
public void processStockInfo() {
try {
Context initCtx = new InitialContext();
System.out.print(initCtx.lookup("java:comp/env/jms/StockQueue"));
} catch (NamingException ex) {
ex.printStackTrace();
}
}
}
反而会产生错误:
SEVERE: javax.naming.NamingException: Lookup failed for 'java:comp/env/jms/StockQueue' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: No object bound for java:comp/env/jms/StockQueue [Root exception is java.lang.NullPointerException]]
奇怪的是,如果我查找 ConnectionFactory 而不是 Queue,则该示例按预期工作。 谁能帮我运行这个例子?我会很感激你的建议。谢谢你。 最好的祝福, 玛丽安
【问题讨论】: