hornetq client throw exception
xiaoqiang Oct 13, 2010 4:34 AMhi:
when I code a hornetq client there is a exception ,the exception :
Exception in thread "main" javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.InitialContext.<init>(Unknown Source)
at com.tao.hornetq_pressure.HornetqPublish.<init>(HornetqPublish.java:66)
at com.tao.hornetq_pressure.HornetqPublish.main(HornetqPublish.java:110)
Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.sun.naming.internal.VersionHelper12.loadClass(Unknown Source)
... 6 more
the follows are the source code:
package com.tao.hornetq_pressure;
import java.util.Properties;
import javax.jms.BytesMessage;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class HornetqPublish {
private static Context context = null;
//private TopicConnectionFactory topicFactory = null;
private static TopicConnection topicConnection = null;
private TopicSession topicSession = null;
private TopicPublisher topicPublisher = null;
private Topic topic = null;
private String provider_url = "tcp://10.232.20.116:1099";
private static HornetqPublish instance = null;
private boolean transacted = true;
private boolean durable = true;
private int messageSize = 512;
private int messageType = 0;
private String messagetopic = "/topic/exampleTopic";
private HornetqPublish(){
provider_url = "jnp://127.0.0.1" + ":1099";
}
synchronized static public HornetqPublish instance() {
if (null == instance) {
instance = new HornetqPublish();
}
return instance;
}
public void init(String serverIP) {
this.provider_url = "jnp://" + serverIP + ":1099";
}
public HornetqPublish(boolean transacted, boolean durable, int messageSize, int messageType) throws NamingException, JMSException{
this.transacted = transacted;
this.durable = durable;
this.messageSize = messageSize;
this.messageType = messageType;
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
properties.put(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
properties.put(Context.PROVIDER_URL, provider_url);
context = new InitialContext(properties);
TopicConnectionFactory topicFactory =
(TopicConnectionFactory)context.lookup("/ConnectionFactory");
topicConnection = topicFactory.createTopicConnection();
topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
topic = topicSession.createTopic(messagetopic);
topicPublisher = topicSession.createPublisher(topic);
if (this.durable)
topicPublisher.setDeliveryMode(DeliveryMode.PERSISTENT);
else
topicPublisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
}
public void publish(){
try {
Message message = null;
switch (this.messageType) {
// ByteMessage
case 0:
BytesMessage byteMessage = topicSession.createBytesMessage();
message = byteMessage;
byteMessage.writeBytes(Utils.createBinaryData(this.messageSize));
break;
default:
break;
}
// 开始发送消息
topicPublisher.publish(message);
// 事务消息还需要手动提交
if (this.transacted)
topicSession.commit();
System.out.println("消息发送完成...");
}
catch (JMSException e) {
try {
topicSession.rollback();
}
catch (JMSException e1) {
e1.printStackTrace();
}
}
}
public static void main (String args[]) throws NamingException, JMSException{
HornetqPublish hp = new HornetqPublish(true, true,512,0);
//hp.init("10.232.20.116");
hp.publish();
}
}
how can I do ?