【问题标题】:How to use JNDI in jmsjms中如何使用JNDI
【发布时间】:2011-08-10 21:19:35
【问题描述】:

我正在学习 JMS 在下面尝试了一个简单的示例,但它给出了错误

package pointToPoint;
import javax.naming.InitialContext;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.QueueSession;
import javax.jms.QueueReceiver;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;

public class Receiver
{
    public static void main(String[] args) throws Exception
    {
       // get the initial context
       InitialContext ctx = new InitialContext();

       // lookup the queue object
       Queue queue = (Queue) ctx.lookup("queue/queue0");

       // lookup the queue connection factory
       QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx.
           lookup("queue/connectionFactory");

       // create a queue connection
       QueueConnection queueConn = connFactory.createQueueConnection();

       // create a queue session
       QueueSession queueSession = queueConn.createQueueSession(false,
           Session.AUTO_ACKNOWLEDGE);

       // create a queue receiver
       QueueReceiver queueReceiver = queueSession.createReceiver(queue);

       // start the connection
       queueConn.start();

       // receive a message
       TextMessage message = (TextMessage) queueReceiver.receive();

       // print the message
       System.out.println("received: " + message.getText());

       // close the queue connection
       queueConn.close();
    }
}

错误信息:

Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.lookup(Unknown Source)
    at pointToPoint.Receiver.main(Receiver.java:22)

谁能帮帮我。

【问题讨论】:

    标签: java jms jndi


    【解决方案1】:

    答案在堆栈跟踪中。在独立应用程序中,您应该将环境(实现、url 等)传递给 InitialContext。在 JBoss 之类的 J2EE 容器中,您的代码可以工作。

    这应该会有所帮助: NoInitialContextException error

    【讨论】:

      【解决方案2】:

      上面的响应者的意思是本教程将帮助您将消息发送到同一应用程序服务器上的接收者。远程查找需要更多的东西

      【讨论】:

        猜你喜欢
        • 2016-03-22
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 2011-11-25
        • 2013-01-30
        • 2015-06-15
        • 2011-10-09
        • 2019-05-19
        相关资源
        最近更新 更多