2011-10-19 32 views
6

リモートHORNETQにJNDIを使用せずにJMSリソースを直接インスタンス化しようとしています。HornetQ JMSException:セッションファクトリの作成に失敗しました

Eclipse IDEでテストコードを実行しています。私のクラスパスがHornetQ 2.2.5ライブラリを使うように設定してください。

ターゲットHornetQはバージョン2.1.2です。最終的に、私はそれらが下位互換性があると思われました。

さて、私はオンラインドキュメントを読んで、JNDIを使用せずにリモートJMSサーバに接続する例を追ってきました。私は次の例外を得るのを続ける。私は何が欠けているかわからないが、私はすべてが正しくセットアップされていると信じている。誰かがここで行方不明を指摘してくれますか?前もって感謝します。

は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

を取得する:私たちは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がnullの場合、あなたは{10.100.111.222

しかし、」$を得るでしょう

あなたは、インスタンスの変数MY_IPを定義して、それを使用することができます::

"$ {10.100.111.222 MY_IP}" 10.100.111.222} "は何も意味しません。

+0

問題が解決する場合は、忘れずに回答を受け入れてください。 :)私はSOF上のポイントを収集しようとしています(おそらく:)) –

+0

あなたの例に従って構文エラーを修正し、boot.logに正しくバインドしていることを確認しましたが、クライアントが2.2.5を使用しているので、互換性は問題ではありませんか? – Byron

+0

コンフィグを更新しないのはなぜですか? –

関連する問題