JBoss AS 7 einfache "hello world" - Anwendung

Ich versuche einen einfachen JMS-Anwendung "Hello world" ausführen. Ich möchte versuchen, es auf JBoss Application Server 7, aber ich bin nicht in der Lage, um es auszuführen. Jboss HornetQ als embedden und ich begann ihn mit dem folgenden Befehl:

standalone.bat --server-config=standalone-preview.xml

Ich denke, das problem ist wahrscheinlich der Weg, den ich so konfiguriert haben, dass der queue innerhalb von JBoss. Hier sind die Schritte, die ich Tat.

  • Konfigurieren Sie die queue -

Quene-name: testQueue
JNDI name: queue/test

Den queue Konfiguration ist eine option für "Auswahl". Kann dieses leer gelassen werden, und wenn nicht, was geht in diesem Bereich?

  • Code

Hier ist der code, den ich verwende als Absender. Ich bin nicht besorgt der Empfänger für jetzt, wie ich gerade starten wollen, senden Sie eine Nachricht zuerst.

package jms.ex3;

import javax.naming.InitialContext;

import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.QueueSender;
import javax.jms.DeliveryMode;
import javax.jms.QueueSession;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;

public class Sender
{
    public static void main(String[] args) throws Exception
    {
       //get the initial context
       InitialContext ctx = new InitialContext();

       //lookup the queue object
       Queue queue = (Queue) ctx.lookup("queue/test");

       //lookup the queue connection factory
       QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx.
           lookup("queue/connectionFactory");

       //create a queue connection
       QueueConnection queueConn = connFactory.createQueueConnection();

       //create a queue session
       QueueSession queueSession = queueConn.createQueueSession(false,
           Session.DUPS_OK_ACKNOWLEDGE);

       //create a queue sender
       QueueSender queueSender = queueSession.createSender(queue);
       queueSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

       //create a simple message to say "Hello"
       TextMessage message = queueSession.createTextMessage("Hello");

       //send the message
       queueSender.send(message);

       //print what we did
       System.out.println("sent: " + message.getText());

       //close the queue connection
       queueConn.close();
    }
}

Wenn ich das vor der Klasse bekomme ich folgende Fehlermeldung:

java -classpath C:\Users\702723344\Downloads\glassfish-3.1.1\glassfish3\glassfish\lib\javaee.jar;. jms.ex3.Sender
Exception in thread "main" 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(Unknown Source)
        at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
        at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
        at javax.naming.InitialContext.lookup(Unknown Source)
        at jms.ex3.Sender.main(Sender.java:22)

Wie funktioniert das genau mit dem oben genannten Klasse weiß, dass der Provider(JBoss) ausgeführt wird auf dem localhost Maschine? Dont ich brauche, um geben Sie eine IP-Adresse irgendwo? Irgendwelche Ideen?

Bearbeiten

Meisten der Dokumentation, die scheinen zu beziehen sich auf den JBoss AS 6. Ich habe aktualisiert das code-snippet, um die folgenden:

Properties env = new Properties();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory" );
    env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
    env.put(Context.PROVIDER_URL, "jnp://localhost:1199");
    ctx = new InitialContext(env);

Ich bin jetzt immer classNotFound exception. Ich denke, es braucht eine zusätzliche jar-Datei Hinzugefügt werden, um die classpath-aber welche???

java -classpath C:\Users\702723344\Downloads\glassfish-3.1.1\glassfish3\glassfish\lib\javaee.jar;. jms.ex3.Sender
    Exception in thread "main" javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
            at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
            at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
            at javax.naming.InitialContext.init(Unknown Source)
            at javax.naming.InitialContext.<init>(Unknown Source)
            at jms.ex3.Sender.main(Sender.java:27)
    Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Unknown Source)
            at com.sun.naming.internal.VersionHelper12.loadClass(Unknown Source)
            ... 5 more

InformationsquelleAutor ziggy | 2011-12-19

Schreibe einen Kommentar