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

Schreibe einen Kommentar