@Resource(name =“jms / StockQueue”,type = javax.jms.Queue)@Stateless public class StockServiceBean {} JNDI查找不起作用

时间:2014-04-21 19:13:28

标签: queue ejb jms jndi

我正在尝试运行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]]

奇怪的是,如果不是Queue,我查找ConnectionFactory,该示例按预期工作。 谁能帮助我运行这个例子?我很感激你的建议。谢谢。 最好的祝福, 玛丽安

1 个答案:

答案 0 :(得分:0)

我遇到与connectionFactory / @Resource / @Stateless类似的问题。在部署时,@ Resource注入试图注入我的服务bean,但最后还没有被Weld实例化(因为他有一个@Dependent范围)

我决定使用connectionFactory手动查看函数,它可以正常工作

另见:https://blogs.oracle.com/chengfang/entry/do_s_and_don_ts

相关问题