the client cann`t connect server via jndi
xiaoqiang Oct 13, 2010 7:41 AMwhen I run my program of client,it tell me I cann`t connect the server,i know maybe the jndi config is wrong,the part of performing a lookup on the Connection Factory has a program,the config of hornet server in hornet-jms.xml as follows:
<configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
<connection-factory name="NettyConnectionFactory">
<connectors>
<connector-ref connector-name="netty"/>
</connectors>
<entries>
<entry name="/ConnectionFactory"/>
<entry name="/XAConnectionFactory"/>
</entries>
</connection-factory>
<queue name="DLQ">
<entry name="/queue/DLQ"/>
</queue>
<queue name="ExpiryQueue">
<entry name="/queue/ExpiryQueue"/>
</queue>
<queue name="ExampleQueue">
<entry name="/queue/ExampleQueue"/>
</queue>
<topic name="ExampleTopic">
<entry name="/topic/ExampleTopic"/>
</topic>
</configuration>
the program of my client are thatthe red part maybe wrong)
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 = "jnp://10.232.20.119: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";
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");
topic = (Topic) context.lookup(messagetopic);
topicConnection = topicFactory.createTopicConnection();
topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
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.publish();
}
}
the runtime exception:
Exception in thread "main" javax.naming.CommunicationException: Could not obtain connection to any of these urls: 10.232.20.119:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server /10.232.20.119:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server /10.232.20.119:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]]
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1763)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:693)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.tao.hornetq_pressure.HornetqPublish.<init>(HornetqPublish.java:67)
at com.tao.hornetq_pressure.HornetqPublish.main(HornetqPublish.java:110)
Caused by: javax.naming.CommunicationException: Failed to connect to server /10.232.20.119:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server /10.232.20.119:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:335)
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1734)
... 5 more
Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server /10.232.20.119:1099 [Root exception is java.net.ConnectException: Connection refused: connect]
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:305)
... 6 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:97)
at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:82)
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:301)
... 6 more
who can help me ,thanks!