Jboss 需要在环境或系统属性中指定类名,或作为小程序参数,或在应用程序资源文件中指定类名
我是JMS新手,正在学习以下示例Jboss 需要在环境或系统属性中指定类名,或作为小程序参数,或在应用程序资源文件中指定类名,jboss,jms,Jboss,Jms,我是JMS新手,正在学习以下示例 public class SendRecvClient { static CountDown done = new CountDown(1); QueueConnection conn; QueueSession session; Queue que; public static class ExListener implements MessageListener { public void onMessag
public class SendRecvClient
{
static CountDown done = new CountDown(1);
QueueConnection conn;
QueueSession session;
Queue que;
public static class ExListener
implements MessageListener
{
public void onMessage(Message msg)
{
done.release();
TextMessage tm = (TextMessage) msg;
try {
System.out.println("onMessage, recv text=" + tm.getText());
} catch(Throwable t) {
t.printStackTrace();
}
}
}
public void setupPTP()
throws JMSException,
NamingException
{
InitialContext iniCtx = new InitialContext();
Object tmp = iniCtx.lookup("ConnectionFactory");
QueueConnectionFactory qcf = (QueueConnectionFactory) tmp;
conn = qcf.createQueueConnection();
que = (Queue) iniCtx.lookup("queue/testQueue");
session = conn.createQueueSession(false,
QueueSession.AUTO_ACKNOWLEDGE);
conn.start();
}
public void sendRecvAsync(String text)
throws JMSException,
NamingException
{
System.out.println("Begin sendRecvAsync");
// Setup the PTP connection, session
setupPTP();
// Set the async listener
QueueReceiver recv = session.createReceiver(que);
recv.setMessageListener(new ExListener());
// Send a text msg
QueueSender send = session.createSender(que);
TextMessage tm = session.createTextMessage(text);
send.send(tm);
System.out.println("sendRecvAsync, sent text=" + tm.getText());
send.close();
System.out.println("End sendRecvAsync");
}
public void stop()
throws JMSException
{
conn.stop();
session.close();
conn.close();
}
public static void main(String args[])
throws Exception
{
SendRecvClient client = new SendRecvClient();
client.sendRecvAsync("A text msg");
client.done.acquire();
client.stop();
System.exit(0);
}
}
我在JBoss中运行了这个,它给出了以下异常
开始sendRecvAsync
线程“main”javax.naming.NoInitialContextException中的异常:需要在环境或系统属性中指定类名,或作为小程序参数,或在应用程序资源文件中指定:java.naming.factory.initial
位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
位于javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
位于javax.naming.InitialContext.GetUrlOrDefaultiniticTx(InitialContext.java:325)
在javax.naming.InitialContext.lookup(InitialContext.java:392)中
位于se.cambio.jms.SendRecvClient.setupPTP(SendRecvClient.java:53)
位于se.cambio.jms.SendRecvClient.sendRecvAsync(SendRecvClient.java:68)
位于se.cambio.jms.SendRecvClient.main(SendRecvClient.java:95)
我认为这是JNDI名称的错误,但我无法在JBOSS中找到要编辑的xml文件来解决这个问题。请有人来帮我。忘了提我在使用JBOSS 5忘了提我在使用JBOSS 5