Wie kann ich sicherstellen, dass die Hornisse Warteschlangen gibt es, wenn mein Webapp in JBOSS 6.0 startet?

StackOverflow https://stackoverflow.com/questions/4269960

Frage

vorheriger Titel war:

Wie erhalte ich eine JNDI-Referenz in eine Warteschlange innerhalb JBOSS 6 Feder mit?

konfigurierte I eine JMS-Warteschlange wie diese, die in einer MyTopic-HornetQ jms.xml-Datei ist:

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="urn:hornetq"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
    <topic name="mytopic">
        <entry name="mytopic"/>
    </topic>
</configuration>

Meine applicationContext.xml sieht wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jee 
http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <jee:jndi-lookup id="jmsConnectionFactory" jndi-name="java:/JmsXA" />
    <jee:jndi-lookup id="jmsDestination" jndi-name="mytopic" expected-type="javax.jms.Topic" />
</beans>

Dies ist die Ausgabe der JMX-Konsole org.jboss.naming.JNDIView mit:

  +- UserTransactionSessionFactory (proxy: $Proxy103 implements interface org.jboss.tm.usertx.interfaces.UserTransactionSessionFactory)
  +- UUIDKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.uuid.UUIDKeyGeneratorFactory)
  +- HiLoKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.hilo.HiLoKeyGeneratorFactory)
  +- SecureDeploymentManager (class: org.jnp.interfaces.NamingContext)
  |   +- remote[link -> DeploymentManager] (class: javax.naming.LinkRef)
  +- SecureManagementView (class: org.jnp.interfaces.NamingContext)
  |   +- remote[link -> ManagementView] (class: javax.naming.LinkRef)
  +- mytopic (class: org.hornetq.jms.client.HornetQTopic)
  +- DeploymentManager (class: org.jboss.aop.generatedproxies.AOPProxy$4)
  +- XAConnectionFactory (class: org.hornetq.jms.client.HornetQConnectionFactory)
  +- ProfileService (class: org.jboss.aop.generatedproxies.AOPProxy$2)
  +- SecureProfileService (class: org.jnp.interfaces.NamingContext)
  |   +- remote[link -> ProfileService] (class: javax.naming.LinkRef)
  +- queue (class: org.jnp.interfaces.NamingContext)
  |   +- DLQ (class: org.hornetq.jms.client.HornetQQueue)
  |   +- ExpiryQueue (class: org.hornetq.jms.client.HornetQQueue)
  +- UserTransaction (class: org.jboss.tm.usertx.client.ClientUserTransaction)
  +- ConnectionFactory (class: org.hornetq.jms.client.HornetQConnectionFactory)
  +- jmx (class: org.jnp.interfaces.NamingContext)
  |   +- invoker (class: org.jnp.interfaces.NamingContext)
  |   |   +- RMIAdaptor (class: javax.management.MBeanServerConnection)
  |   +- rmi (class: org.jnp.interfaces.NamingContext)
  |   |   +- RMIAdaptor (class: javax.management.MBeanServerConnection)
  +- BeanValidatorFactories (class: org.jnp.interfaces.NamingContext)
  +- TomcatAuthenticators (class: java.util.Properties)
  +- XAThroughputConnectionFactory (class: org.hornetq.jms.client.HornetQConnectionFactory)
  +- ManagementView (class: org.jboss.aop.generatedproxies.AOPProxy$3)
  +- ThroughputConnectionFactory (class: org.hornetq.jms.client.HornetQConnectionFactory)

, die in meinem Buch Mittel, das Thema an den JNDI-Namen gebunden ist „MyTopic“

Dennoch tut Frühling throw

18:45:29,636 ERROR [ContextLoader] Context initialization failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsDestination': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: mytopic not bound
...
Caused by: javax.naming.NameNotFoundException: mytopic not bound
  at org.jnp.server.NamingServer.getBinding(NamingServer.java:771) [:5.0.5.Final]
  at org.jnp.server.NamingServer.getBinding(NamingServer.java:779) [:5.0.5.Final]
  at org.jnp.server.NamingServer.getObject(NamingServer.java:785) [:5.0.5.Final]
  at org.jnp.server.NamingServer.lookup(NamingServer.java:443) [:5.0.5.Final]

UPDATE

Es scheint, dass es nicht wirklich ein Problem sucht, ist die JNDI-Referenz, aber tatsächlich, dass die Hornisse Warteschlangen werden nicht zum Zeitpunkt konfiguriert, wenn die Anwendung gestartet wird.

Wenn ich die Anwendung einige Zeit später einsetzen, wird es ganz gut, weil zu diesem Zeitpunkt die Hornisse Warteschlangen sind konfiguriert ausgeführt werden.

Gibt es eine Möglichkeit zu geben, dass die Anwendung nicht, bis beginnt die Warteschlangen sind, oder die eine Konfigurationsoption für den Jboss zu halten, Einsatz, bis der Rest gestartet wird?

War es hilfreich?

Lösung

Ich habe erfolgreich die „hängt“ -Mechanismus in Jboss 4.2 eingesetzt. Mit ihm können Sie angeben, dass etwas auf etwas anderes abhängt (entweder XML-Deskriptoren oder für ejb3 verwenden, können Sie Anmerkungen verwenden). Hier ist ein Link gestartet

Andere Tipps

Was ist, wenn Sie das java:/ Präfix (das gleiche wie Sie für JmsXA haben)? d.

<jee:jndi-lookup id="jmsDestination" jndi-name="java:/mytopic" expected-type="javax.jms.Topic" />

BTW, ich sehe nichts unter JmsXA Namen definiert in Ihrem JNDI-Dump. Sie könnten auch ein Problem damit haben.

Ich habe HornetQ nicht verwendet, ich habe nur um Ihrer Frage lesen Sie die Tutorial zum Einrichten Frühling zusammen mit HornetQ . Es gibt einen Abschnitt dort über jndi.properties einrichten. Dies ist wahrscheinlich sicher HornetQ registriert seine Sachen in JBoss-JNDI-Kontext zu machen.

Sind Sie sicher, dass Sie eine Datei wie sie vorschlagen, und es ist richtig platziert?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top