2017-04-05 20 views
0

JMS接続を確立しようとしています。JMS:activemq-version.propertiesを利用できません。

によって引き起こさ

:java.lang.RuntimeException:activemq-version.propertiesはorg.apacheで 利用できないconnectionFactory.createContextで、私は、ActiveMQのバージョンローダーはプロパティファイルが欠落していることを報告するエラーを取得します.activemq.artemis.utils.VersionLoader.getVersion(VersionLoader.java:87)

私は、Eclipseからプロジェクトを実行している - それは最も可能性の高い日食クラスパスの問題ですので、私は不足しているライブラリを見つけることができません。

のフルスタックトレース:

javax.jms.JMSRuntimeException: Failed to create session factory 
    at org.apache.activemq.artemis.jms.client.JmsExceptionUtils.convertToRuntimeException(JmsExceptionUtils.java:88) 
    at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createContext(ActiveMQConnectionFactory.java:262) 
    at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createContex t(ActiveMQConnectionFactory.java:248) 
    at at.cone.health.dispo.online.DispoServerFacadeImpl$JMSReceiverThread.run(DispoServerFacadeImpl.java:109) 
Caused by: javax.jms.JMSException: Failed to create session factory 
    at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnectionInternal(ActiveMQConnectionFactory.java:727) 
    at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createContext(ActiveMQConnectionFactory.java:255) 
    ... 2 more 
Caused by: java.lang.RuntimeException: activemq-version.properties is not available 
    at org.apache.activemq.artemis.utils.VersionLoader.getVersion(VersionLoader.java:87) 
    at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQClientProtocolManager.<init>(ActiveMQClientProtocolManager.java:81) 
    at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQClientProtocolManagerFactory.newProtocolManager(ActiveMQClientProtocolManagerFactory.java:49) 
    at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.newProtocolManager(ServerLocatorImpl.java:575) 
    at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.<init>(ClientSessionFactoryImpl.java:173) 
    at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:757) 
    at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnectionInternal(ActiveMQConnectionFactory.java:724) 
... 3 more 

私は、接続設定しようコード: のInitialContextのnamingContext =新しいのInitialContext(ENV)を、

   ConnectionFactory connectionFactory = (ConnectionFactory) namingContext.lookup(CONNECTION_FACTORY); 
       System.out.println("Got ConnectionFactory " + CONNECTION_FACTORY); 

       destination = (Destination) namingContext.lookup(DESTINATION); 

       System.out.println("Got JMS Endpoint " + DESTINATION); 

       final JMSContext context = connectionFactory.createContext("internal", "internal"); 

       this.context = context; 

       JMSConsumer consumer = context.createConsumer(destination, "client='" + clientUID + "'", true); 

       // Then receive the same number of messages that were sent 

プロジェクトはANTベースであるため、依存関係管理は使用できません。それにもかかわらず、サーバ部分はmavenビルドを使用するので、ローカルのmavenリポジトリと、.m2ディレクトリを指すeclipseビルドパス変数M2_REPOを持っています。私はEclipseプロジェクトでライブラリの依存関係を設定しようとしました。私はEclipseからプロジェクトを実行しているので、最初はANT関連の依存関係を無視し、Eclipseにのみフォーカスを当てることができます。

私のMavenリポジトリからwildfly-client-all-10.0.0.Final.jarにライブラリ依存関係を追加しました(パスで拡張されたM2_REPO変数を使用)。ライブラリーは、eclipseプロジェクトの参照ライブラリーとして正しく表示されます。

私は、Eclipse Mavenプロジェクトで同じコード行を使ってデモを実装しました。ここでは例外はありませんでしたが、デモではメッセージを受け取ることができました。だから、クラスパスの問題だと思う。

googleとstackoverflowに欠けているactivemq-version.propertiesも検索しましたが、関連するものは見つかりませんでした。私も、activemq-version.propertiesというリソースを見つけられませんでした。デモ・プロジェクト(およびその依存関係)ではうまく実行されませんでした。

答えて

0

もう少し調査したら、理由を特定しました。

実行コンフィギュレーションでは、私は別のクラスパスを持っていました。このクラスパスは、古い構成から残っていました。ここでは、私はMavenビルドと同じ瓶を使用しませんでした。実行コンフィギュレーションには、wildfly/bin/clientディレクトリのjboss-client.jarとjboss-cli-client.jarが含まれていました。

この設定は間違っていた、と私は私のログに認識していなかった追加の警告を引き起こしたが、また解決へのヒントだった:

がWARN:EJBクライアントの統合が原因利用できませんEJBクライアントハンドラを設定する際の問題へ

これをmavenプロジェクトのランタイムにも含まれているwildfly-client-all-10.0.0.Final.jarに変更しましたが、問題。

は、その後、私はこの記事を見つけた: https://developer.jboss.org/thread/267824

ソリューション:実行時の設定のための第一の構成のアプローチに戻って、wildflyの\ビン\クライアントディレクトリからJARを使用して、唯一のjboss-CLI-client.jarのAND jboss-client-jarではありません。