Problembeschreibung: Ich suche Hilfe, um eine JMS-Verbindungsfactory einer Remote-ActiveMQ-Instanz (TCP-Überwachung) als Container-Ressource in Tomcat7 verfügbar zu machen, damit die Webanwendungen bereitgestellt werden Tomcat7 kann darauf zugreifen.Tomcat-Konfiguration zum Herstellen einer Verbindung mit ActiveMQ-Remoteserver
Meine Konfiguration: Ich habe eine Tomee und eine Tomcat7-Instanz auf dem Server ausgeführt. Die Tomee in Gastgeber für die ActiveMQ mit Broker konfiguriert zu hören wireformat Verbindung (tomee.xml unten) TCP:
<?xml version="1.0" encoding="UTF-8"?>
<tomee>
<!-- see http://tomee.apache.org/containers-and-resources.html -->
<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
BrokerXmlConfig = broker:(tcp://10.173.80.42:61619)
ServerUrl = tcp://10.173.80.42:61619
</Resource>
<Resource id="jms/ConnectionFactory" type="javax.jms.ConnectionFactory">
ResourceAdapter = MyJmsResourceAdapter
</Resource>
<Container id="MyJmsMdbContainer" type="MESSAGE">
ResourceAdapter = MyJmsResourceAdapter
</Container>
<Resource id="myqueue" type="javax.jms.Queue"/>
<!-- activate next line to be able to deploy applications in apps -->
<Deployments dir="apps" />
</tomee>
In meinem tomcat7 Beispiel, ich habe die server.xml wie konfiguriert:
<Resource name="jms/ConnectionFactory"
auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="tcp://10.173.80.42:61619?soTimeout=60000"
brokerName="ActiveMQStageBroker"
useEmbeddedBroker="false" />
<Resource name="myQueue"
auth="Container"
type="org.apache.activemq.command.ActiveMQQueue"
proxy-interface="javax.jms.Queue"
description="My Queue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="myQueue" />
Und ich habe activemq-all-5.12.0.jar im freigegebenen Bibliotheksordner Tomcat7 abgelegt. Ich habe auch die entsprechenden Hinweise in der context.xml Datei unter dem Web-Anwendungen Ordner META-INF und für ein zusätzliches Maß erstellt resource-ref in der web.xml (im Wesentlichen für Strohhalm greifen hier)
Meine Beobachtungen : wenn ich die Aktion, die mit den ActiveMQ löst Kommunikation initiieren, sehe ich die folgenden Einträge in meiner Protokolldatei:
2016-07-19 10:40:07,659 [system ] DEBUG WireFormatNegotiator - Sending: WireFormatInfo { version=11, properties={MaxFrameSize=9223372036854775807, CacheSize=1024, CacheEnabled=true, Host=10.173.80.42, SizePrefixDisabled=false, MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
2016-07-19 10:40:07,666 [.42:[email protected]] DEBUG InactivityMonitor - Using min of local: WireFormatInfo { version=11, properties={MaxFrameSize=9223372036854775807, CacheSize=1024, CacheEnabled=true, Host=10.173.80.42, SizePrefixDisabled=false, MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} and remote: WireFormatInfo { version=10, properties={CacheSize=1024, MaxFrameSize=9223372036854775807, CacheEnabled=true, SizePrefixDisabled=false, TcpNoDelayEnabled=true, MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
2016-07-19 10:40:07,667 [.42:[email protected]] DEBUG WireFormatNegotiator - Received WireFormat: WireFormatInfo { version=10, properties={CacheSize=1024, MaxFrameSize=9223372036854775807, CacheEnabled=true, SizePrefixDisabled=false, TcpNoDelayEnabled=true, MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000, TightEncodingEnabled=true, StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
2016-07-19 10:40:07,667 [.42:[email protected]] DEBUG WireFormatNegotiator - tcp:///10.173.80.42:[email protected] before negotiation: OpenWireFormat{version=11, cacheEnabled=false, stackTraceEnabled=false, tightEncodingEnabled=false, sizePrefixDisabled=false, maxFrameSize=9223372036854775807}
2016-07-19 10:40:07,668 [.42:[email protected]] DEBUG WireFormatNegotiator - tcp:///10.173.80.42:[email protected] after negotiation: OpenWireFormat{version=10, cacheEnabled=true, stackTraceEnabled=true, tightEncodingEnabled=true, sizePrefixDisabled=false, maxFrameSize=9223372036854775807}
2016-07-19 10:40:08,834 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:08,836 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:08,834 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:08,836 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:18,835 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:18,835 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:27,667 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:27,668 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:28,813 [ ReadCheckTimer] DEBUG AbstractInactivityMonitor - 30000ms elapsed since last read check.
2016-07-19 10:40:28,834 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:28,834 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:37,667 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:37,668 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:38,834 [WriteCheckTimer] DEBUG AbstractInactivityMonitor - WriteChecker: 10000ms elapsed since last write check.
2016-07-19 10:40:38,835 [yMonitor Worker] DEBUG AbstractInactivityMonitor - Running WriteCheck[tcp://10.173.80.42:61619]
2016-07-19 10:40:47,667 [ ReadCheckTimer] DEBUG AbstractInactivityMonitor - 30000ms elapsed since last read check.
auch, wenn ich in meiner Warteschlange EnqueueCount und DequeueCount aussehen, ich sie sehen, haben sich nicht geändert.
Da das Protokoll anzeigt, dass mein Tomcat7-Container tatsächlich Informationen von der Remote-Instanz erhalten hat (siehe "Empfangenes Drahtformat: ..."), können die beiden Instanzen kommunizieren. Warum kann ich die Daten nicht senden?
Nachtrag: Die gleiche Webanwendung, wenn sie in der Tomee-Instanz bereitgestellt wird, die den ActiveMQ hostet, kann nahtlos mit der Warteschlange kommunizieren.
Ich schätze alle Gedanken darüber, was ich falsch machen könnte oder Optionen, die ich sowohl auf Tomee als auch auf Tomcat7 ausprobieren kann.
Vielen Dank im Voraus!
Warum nicht nur einen eigenständigen Broker ausführen? Sie verbinden bereits extern –
@ JonathanS.Fisher, ja, das ist eine Option, und ich bin auch dabei. Das oben erwähnte Setup sollte jedoch zumindest theoretisch funktionieren. Der andere treibende Grund für die Verwendung der Tomee-basierten Warteschlange ist, dass der Tomee-Container einen MDB-gesteuerten Dienst hostet, der mit der Warteschlange gut funktioniert. Irgendwelche Gedanken zu dem, was das oben erwähnte Problem verursachen könnte? – deepthought