2011-10-19 37 views
6

JMS kaynaklarını bir REMOTE HORNETQ'a kullanmadan doğrudan JMS Kaynaklarını başlatmaya çalışıyorum.HornetQ JMSException: Oturum fabrikası oluşturulamadı

Test kodumu Eclipse IDE'de çalıştırıyorum. HornetQ 2.2.5 kitaplıklarını kullanmak için sınıf yolumu kur.

Hedef HornetQ sürümü 2.1.2.Final, geriye doğru uyumlu olması gerektiğini düşündüm, belki yanlış mıyım?

Tamam, bu nedenle çevrimiçi belgeleri okudum ve JNDI kullanmadan uzak bir JMS sunucusuna bağlanmadaki örnekleri takip ettim. Aşağıdaki istisnaları almaya devam ediyorum. Eksik olduğumdan emin değilim ama herşeyin doğru şekilde kurulduğuna inanıyorum. Birisi burada eksik olanı işaret edebilir mi lütfen? Şimdiden teşekkürler.

JMSException:

hornetq-configuration.xml konnektör oturumu fabrika oluşturulamadı geçerli:

<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> 

kabul edendir:

<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> 

Benim Testi kodudur: Bağlantı bağlantısı = 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(); 
      } 
     } 
     } 

Ben uyumluluk İlişkin aşağıdaki istisna

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 

cevap

8

olsun: Biz 2.2.5+ kadar istemci uyumluluğu yoktu. İstemciyi 2.2.2'de ve 2.2.5'teki sunucuda denerseniz, muhtemelen bir sürüm uyuşmazlığı istisnası alırsınız.

Biz her zaman 2.2.5+

den uyumlu olacak hedefliyoruz Ve siz config bir yazım hatası var:

<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> 

Biz özellikleri ve varsayılan değerler için bir sözdizimi kullanın. MY_IP boş ise, {10.100.111.222

Ama "$ alacağı

Sen mesela değişken MY_IP tanımlayıp olarak kullanabiliriz:

"$ {10.100.111.222 MY_IP}" 10.100.111.222} "bir şey ifade etmiyor.

+0

Lütfen sorununuzu çözerse cevabı kabul etmeyi unutmayın! :) SOF'ta puan toplamaya çalışıyorum (sadece büyük ihtimalle eğlenmek için :)) –

+0

Örneğinizi izleyerek sözdizimi hatayı düzelttim ve doğru şekilde bağladığı boot.log dosyasında görüyorum.Ama yine de aynı hatayı alıyorum İstemci 2.2.5 kullandığından beri uyumluluk bir sorun olmamalı, doğru değil mi? – Byron

+0

Neden konfigürasyonu güncellemiyorsunuz –

İlgili konular