/ / HornetQ JMSException: Неуспешно създаване на фабрична сесия - jms, hornetq

HornetQ JMSException: Неуспешно създаване на фабрика за сесии - jms, hornetq

Аз се опитвам директно да създавам JMS ресурси без да използвам JNDI за дистанционно управление.

Изпълнявам своя тестов код в Eclipse IDE. Настройка на моя classpath да използвате HornetQ 2.2.5 библиотеки.

Целевата HornetQ е версия 2.1.2.Final, аз помислих, че те трябва да бъдат обратно съвместими, може би IM грешно?

Добре, така че прочетох онлайн документацията иследва примери за свързване към отдалечен JMS сървър без използване на JNDI. Продължавам да получавам следното изключение. Im не съм сигурен какво IM липсва, но аз вярвам, че имам всичко настройка правилно. Може ли някой да посочи какво липсва тук? Благодаря предварително.

JMSException: Неуспешно създаване на фабрика за сесия

Съединителят на hornetq-configuration.xml е:

  <connector name="netty">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host"  value="${10.100.111.222}"/>
<param key="port"  value="${hornetq.remoting.netty.port:5445}"/>
</connector>

Приемателят е:

  <acceptor name="netty">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>
<param key="host"  value="${10.100.111.222}"/>
<param key="port"  value="${hornetq.remoting.netty.port:5445}"/>
</acceptor>

Моят тестов код е: Връзка за връзка = null;

   try
{
Queue queue = HornetQJMSClient.createQueue("TESTQ");

Map<String, Object> connectionParams = new HashMap<String, Object>();
connectionParams.put(TransportConstants.PORT_PROP_NAME, 5445);
connectionParams.put(TransportConstants.HOST_PROP_NAME, "10.100.111.222");

TransportConfiguration transportConfiguration = new TransportConfiguration(NettyConnectorFactory.class.getName(),
connectionParams);
ConnectionFactory factory = (ConnectionFactory) HornetQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, transportConfiguration);
System.out.println("debug: " + factory.getClass());

connection = factory.createConnection();

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

MessageProducer producer = session.createProducer(queue);

TextMessage message = session.createTextMessage("This is a test message");
System.out.println("Sent message: " + message.getText());

producer.send(message);

}
finally
{
if (connection != null)
{
try {
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

Получавам следното Изключение

SEVERE: Failed to create netty connection
java.net.SocketTimeoutException: connect timed out
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.jboss.netty.channel.socket.oio.OioClientSocketPipelineSink.connect(OioClientSocketPipelineSink.java:114)
at org.jboss.netty.channel.socket.oio.OioClientSocketPipelineSink.eventSunk(OioClientSocketPipelineSink.java:74)
at org.jboss.netty.channel.Channels.connect(Channels.java:541)
at org.jboss.netty.channel.AbstractChannel.connect(AbstractChannel.java:218)
at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:227)
at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:188)
at org.hornetq.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:450)
at org.hornetq.core.client.impl.ClientSessionFactoryImpl.getConnection(ClientSessionFactoryImpl.java:1016)
at org.hornetq.core.client.impl.ClientSessionFactoryImpl.getConnectionWithRetry(ClientSessionFactoryImpl.java:897)
at org.hornetq.core.client.impl.ClientSessionFactoryImpl.connect(ClientSessionFactoryImpl.java:212)
at org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:602)
at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:611)
at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:121)
at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:116)
at com.ws.proto.ManualJMS.main(ManualJMS.java:39)
Oct 19, 2011 1:18:50 PM org.hornetq.core.logging.impl.JULLogDelegate warn
WARNING: Tried 1 times to connect. Now giving up on reconnecting it.
Exception in thread "main" javax.jms.JMSException: Failed to create session factory
at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:615)
at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:121)
at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:116)
at com.ws.proto.ManualJMS.main(ManualJMS.java:39)
Caused by: HornetQException[errorCode=2 message=Cannot connect to server(s). Tried with all available servers.]
at org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:619)
at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:611)
... 3 more

Отговори:

8 за отговор № 1

Относно съвместимостта: Не сме имали клиентска съвместимост до 2.2.5+. Ако опитате клиент на 2.2.2 и сървър на 2.2.5, вероятно ще получите изключение за несъответствие във версията.

Стремим се винаги да бъдем съвместими от 2.2.5+

И вие имате правописна грешка в конфигурацията си:

  <connector name="netty">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host"  value="10.100.111.222"/>
<param key="port"  value="${hornetq.remoting.netty.port:5445}"/>
</connector>

Използваме синтаксис за свойства и стойности по подразбиране. Можете например да зададете променлива MY_IP и да я използвате като:

"$ {MY_IP: 10.100.111.222}"

Ако MY_IP е нула, ще получите 10.100.111.222

Но "$ {10.100.111.222}" не означава нищо.