【发布时间】:2015-05-10 11:28:36
【问题描述】:
我是 JMS 的新手,正在尝试使用 Glassfish 应用服务器执行我的第一个 JMS 程序。
我在 Glassfish 管理控制台中创建了连接工厂 [jms/MyQueueFactory] 和目标资源 [jms/myQueue],如下所示:
以下是我的代码:
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.InitialContext;
public class MyReceiver
{
public static void main(String[] args)
{
try
{
InitialContext ctx = new InitialContext();
QueueConnectionFactory f = (QueueConnectionFactory)ctx.lookup("jms/MyQueueFactory"); **// Getting error here**
QueueConnection con = f.createQueueConnection();
con.start();
QueueSession session = con.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue t = (Queue)ctx.lookup("jms/myQueue");
QueueReceiver receiver = session.createReceiver(t);
MyListener listner = new MyListener();
receiver.setMessageListener(listner);
System.out.println("Receiver1 is ready, waiting for messages...");
System.out.println("press Ctrl+c to shutdown...");
while(true)
{
Thread.sleep(1000);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
但是当我尝试执行时,它给了我以下错误:
javax.naming.NoInitialContextException: 需要指定类名 环境或系统属性,或作为小程序参数,或在 应用程序资源文件:java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(未知来源)在 javax.naming.InitialContext.getDefaultInitCtx(未知来源)在 javax.naming.InitialContext.getURLOrDefaultInitCtx(未知来源)在 javax.naming.InitialContext.lookup(未知来源)在 com.test.MyReceiver.main(MyReceiver.java:16)
请让我知道我在这里缺少什么。
谢谢。
【问题讨论】:
-
你的问题得到解答了吗?
-
我可以说它对我有帮助,我尝试将 jndi-properties.jar 文件放在我的类路径中,错误已解决,但随后我开始收到 Glassfish Jars 的 classnotfound 异常。我试图在我的 Eclipse 中配置 Glassfish,但我无法配置它。但是,我会尝试让你知道我是否会在这方面取得成功。但感谢您的帮助。 :)
-
你用
appclient运行它了吗? -
不,我在windows环境下工作,我尝试直接从eclipse运行。
标签: java jakarta-ee glassfish jms jndi