0

HornetQ 2.14 Final User マニュアルで提供されているサンプルの 1 つを実行しようとしています。以下は、サーブレットで実行している Java コードです (クライアントとサーバーは両方とも同じ VM にあります)。

    TransportConfiguration transportConfiguration = new TransportConfiguration(InVMConnectorFactory.class.getName());

    ServerLocator locator = HornetQClient.createServerLocatorWithoutHA(transportConfiguration);

    ClientSessionFactory factory = locator.createSessionFactory(); //Causing error

[ClientSessionFactory の作成に使用する Java コード]

以下は、standalone-full.xmlの構成です ...

<acceptors>
   <netty-acceptor name="netty" socket-binding="messaging"/>

   <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
    <param key="batch-delay" value="50"/>
    <param key="direct-deliver" value="false"/>
    </netty-acceptor>

   <in-vm-acceptor name="in-vm" server-id="0"/>
</acceptors>

【スタンドアロンフル.xml】

残念ながら、locator.createSessionFactory() は次の例外をスローしています-

WARN [org.hornetq.jms.server.recovery.HornetQXAResourceWrapper] (定期的な復旧) 復旧時にどの hornetq サーバーにも接続できません [XARecoveryConfig [hornetQConnectionFactory=HornetQConnectionFactory [serverLocator=ServerLocatorImpl [initialConnectors=[org-hornetq-core-remoting- impl-invm-InVMConnectorFactory?server-id=0]、discoveryGroupConfiguration=null]、clientID=null、dupsOKBatchSize=1048576、transactionBatchSize=1048576、readOnly=false]、username=null、password=null]]

ERROR [stderr] (http--127.0.0.1-8080-1) HornetQException[errorCode=2 message=サーバーに接続できません。利用可能なすべてのサーバーで試しました。]

エラー [stderr] (http--127.0.0.1-8080-1) org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:774) で

エラー [stderr] (http--127.0.0.1-8080-1) at test.jms.JMSReceiver.receive1(JMSReceiver.java:150)

test.jms.JMSReceiver.doGet(JMSReceiver.java:48) でのエラー [stderr] (http--127.0.0.1-8080-1)

ERROR [stderr] (http--127.0.0.1-8080-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)

ERROR [stderr] (http--127.0.0.1-8080-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) .... 続き

これがどれほど関連性があるかはわかりませんが、ソースコードをデバッグしているときに、

  public class InVMConnector implements Connector
  {
       public static final Logger log = Logger.getLogger(InVMConnector.class);

   public InVMConnector(final Map<String, Object> configuration,
                    final BufferHandler handler,
                    final ConnectionLifeCycleListener listener,
                    final Executor closeExecutor,
                    final Executor threadPool)
      {
         this.listener = listener;

        id =    ConfigurationHelper.getIntProperty(TransportConstants.SERVER_ID_PROP_NAME, 0, configuration);
  //Value of id = 0 in my case
        this.handler = handler;

        this.closeExecutor = closeExecutor;

         executorFactory = new OrderedExecutorFactory(threadPool);

         InVMRegistry registry = InVMRegistry.instance;

         acceptor = registry.getAcceptor(id);
     //acceptor is null here for me
       }

    }

[Hornetq のソースコードからコピー - 2.14 Final]

acceptor = registry.getAcceptor(id) は私にとって null であるため、サーバーとの接続をまったく作成しようとしていません。

アクセプターの構成が不足している場合はお知らせください。

ご協力いただきありがとうございます。

よろしく、-ak

4

0 に答える 0