OK、たくさん遊んだ後、動作するようになりました。アクティブ mq からメッセージを受信するために、コネクタ リソース、接続プール、または管理オブジェクト リソースを作成する必要はありません。
要約すると、コネクタ genericra.rar (名前を genericRA に変更) を Glassfish http://java.net/downloads/genericjmsra/v2.1a/binaries/にデプロイしました。http://activemq.apache.org/sjsas-with-genericjmsra.htmlの設定を使用して、リソース アダプタの構成を構成しました(以下にコピー - 例に合わせてわずかに変更されています)。グラスフィッシュで手動で詳細を入力しました。
asadmin create-resource-adapter-config
--property
SupportsXA=true
:RMPolicy=OnePerPhysicalConnection
:ProviderIntegrationMode=javabean
:ConnectionFactoryClassName=org.apache.activemq.ActiveMQConnectionFactory
:QueueConnectionFactoryClassName=org.apache.activemq.ActiveMQConnectionFactory
:TopicConnectionFactoryClassName=org.apache.activemq.ActiveMQConnectionFactory
:XAConnectionFactoryClassName=org.apache.activemq.ActiveMQXAConnectionFactory
:XAQueueConnectionFactoryClassName=org.apache.activemq.ActiveMQXAConnectionFactory
:XATopicConnectionFactoryClassName=org.apache.activemq.ActiveMQXAConnectionFactory
:UnifiedDestinationClassName=org.apache.activemq.command.ActiveMQDestination
:QueueClassName=org.apache.activemq.command.ActiveMQQueue
:TopicClassName=org.apache.activemq.command.ActiveMQTopic
:ConnectionFactoryProperties=brokerURL\\=tcp\\://127.0.0.1\\:61616
:LogLevel=FINE
genericRA
Glassfish から送信することを希望する場合、管理オブジェクト リソースが jndi リスト (./asadmin list-jndi-entries) に表示されていないことがわかりました。管理オブジェクト リソースが無効になっていることがわかりました。domain.xml を編集して、enabled = true に設定する必要がありました。
私のテスト メッセージ駆動型 Bean。
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destinationProperties",propertyValue = "PhysicalName=amqQueue")
})
public class ActiveMQTestListener implements MessageListener {
public void onMessage(Message message) {
System.out.println(message.toString());
}
}
私のglassfish-ejb-jar.xml;
<glassfish-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>ActiveMQTestListener</ejb-name>
<mdb-resource-adapter>
<resource-adapter-mid>genericRA</resource-adapter-mid>
</mdb-resource-adapter>
</ejb>
</enterprise-beans>
</glassfish-ejb-jar>
activeMQ、glassfish を (メッセージが表示されるようにデバッグ モードで) 起動し、コンソール (http://localhost:8161/admin) を起動しました。amqQueue という新しいキューを作成しました。新しいメッセージを作成し (activeMQ コンソールで送信)、送信先を amqQueue に設定し、メッセージ本文にテキストを入力しました。送信をクリックすると、コードでブレークポイントがトリガーされました。