Ausführen von HornetQ als standalone-server-Beispiel
Im moment bin ich kämpfen, um zu lernen, HornetQ. Die Dinge scheinen ganz einfach in der Theorie, aber ich habe eine harte Zeit läuft sogar die meisten basic-Beispiel.
Bisher hab ich versucht zu starten, HornetQ als standalone-server, und schließen Sie einen einfachen client, der eine Nachricht sendet und dann empfängt es wieder.
Den Schritten, die ich verfolgt habe sind :
(entsprechend HornetQ docs
http://hornetq.sourceforge.net/docs/hornetq-2.0.0.GA/user-manual/en/html/using-jms.html)
Heruntergeladen die neueste version von HornetQ (2.2.5) und extrahiert es.
-Geändert INSTALL_DIRECTORY\config\stand-alone\non-clustered\hornetq-jms.xml Datei zu erstellen, die Objekte, die ich brauche, unten ist der Inhalt :
<configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq ../schemas/hornetq-jms.xsd ">
<connection-factory name="ConnectionFactory">
<connectors>
<connector-ref connector-name="netty"/>
</connectors>
<entries>
<entry name="ConnectionFactory"/>
</entries>
</connection-factory>
<queue name="OrderQueue">
<entry name="queues/OrderQueue"/>
</queue>
</configuration>
-Datei INSTALL_DIRECTORY\config\stand-alone\non-clustered\hornetq-beans.xml enthalten die Bohne benötigt, um starten Sie den JNDI-Dienst.
-Es ist auch eine Datei namens jndi.Eigenschaften in der INSTALL_DIRECTORY\config\Standalone\non-clustered - \ - Ordner
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
Den Client-code ist der folgende :
public void test()
{
try
{
ic = new InitialContext();
cf = (ConnectionFactory)ic.lookup("/ConnectionFactory");
orderQueue = (Queue)ic.lookup("/queues/OrderQueue");
connection = cf.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
producer = session.createProducer(orderQueue);
consumer = session.createConsumer(orderQueue);
connection.start();
TextMessage message = session.createTextMessage("This is an order");
producer.send(message);
TextMessage receivedMessage = (TextMessage)consumer.receive();
System.out.println("Got order: " + receivedMessage.getText());
}
catch (Exception e)
{
e.printStackTrace();
}
}
Aber jedesmal, wenn ich es laufen lasse, stürzt er ab mit folgender Ausnahme :
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:344)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
Ich glaube, ich habe alles versucht, um es auszuführen, und doch ist es immer noch entzieht sich mir, was ich falsch mache. Irgendwelche Vorschläge zu diesem Thema sind sehr willkommen !
InformationsquelleAutor steve | 2011-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
First off, würde ich anfangen, mit die Dokumentation, dass bezieht sich direkt auf die HornetQ-version Sie verwenden.
Ich denke, dass Sie möglicherweise fehlt Bibliotheken in Ihrem client-code. Bitte stellen Sie sicher, fügen
$HORNETQ_HOME/lib
Inhalt an den client-Abhängigkeiten und sehen, ob das funktioniert. Andernfalls aktualisieren Sie Ihre Frage und versuchen zu helfen, wieder 🙂Gut , ich habe es ausprobiert ...und es funktioniert nicht ! Von dem, was ich herausfinden kann scheint es, dass HornetQ beginnt ok, initialisiert den JNDI-Dienst , erstellt alle verwalteten Objekte , aber der client ist nicht in der Lage, eine Kommunikation mit dem JNDI-Dienst !
Vielleicht gibt es mehr zu tun auf der client-Seite zu konfigurieren eine korrekte Verwendung von JNDI (fehlende jndi.Eigenschaften oder unvollständigen Einstellungen in der Datei )!
Können Sie versuchen, geben Sie Ihre jndi-Eigenschaften programmgesteuert die Ausgangssituation? Nicht sicher, ob es Kommissionierung der config-Datei korrekt.
InformationsquelleAutor Gonzalo Garcia Lasurtegui
Ist Ihre jndi.Eigenschaften-Datei in den classpath? Es klingt wie Ihr in der config-Pfad des Servers, aber Ihr client-code kann es nicht finden.
InformationsquelleAutor Serge Merzliakov
Außerdem können Sie die Informationen in den Kontext programmatisch, für einen Versuch, definning eine hashtable mit den Werten für die PROVIDER_URL, INITIAL_CONTEXT_FACTORY, und URL_PKG_PREFIXES; und der übergabe an den InitialContext Konstruktor
Es wortked gut für mich.
InformationsquelleAutor Rafael