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というリソースを見つけられませんでした。デモ・プロジェクト(およびその依存関係)ではうまく実行されませんでした。