JMS Newbie braucht hilfe

Status
Nicht offen für weitere Antworten.

noerion

Mitglied
morgen zusammen

ich beschäftige mich grad mit JMS als Kommunikation für eine verteilte Anwendung (Spiel). ich arbeite grad mal die Tutorials durch, die Sache mit den Topics senden und empfangen klappt schon ganz gut auch im Netzwerk.
wenn ich allerdings eine Queue benutzen will, gibt er mir immer
JNDI lookup failed: 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
aus.
ich hab den Fehler in der Beipieldatei "SampleUtilities.java" gefunden.
in diese Klasse wird nach dem Context gefragt und anscheinend keiner gefunden.
Code:
public static Object jndiLookup(String name) throws NamingException {
        Object    obj = null;

        if (jndiContext == null) {
            try {
                jndiContext = new InitialContext();
                                
            } catch (NamingException e) {
                System.out.println("Could not create JNDI context: " + 
                    e.toString());
                throw e;
            }
        }
        try {
           obj = jndiContext.lookup(name);
        } catch (NamingException e) {
            System.out.println("JNDI lookup failed: " + e.toString());
            throw e;
        }
        return obj;
    }
ich hab den Server von openjms laufen, sonst würd das ja mit den Topic auch nicht funzen. JAVA_HOME und OPENJMS_HOME sind gesetzt. die jars sind eingebunden, ach und ich nehm Eclipse 3.0.

nun meine Frage, hab ich noch irgendwas übersehen? muss ich noch was setzen oder in den Code fassen das es klappt? wie kann ihc den Context gesetzt bekommen, notfalls "brute force"?

ich hoffe jemande kann mir helfen
Noerion
 

Bleiglanz

Gesperrter Benutzer
normalerweise musst du noch Properties übergeben (oder jndi.properties im Classpath haben)

ein "blanker" Aufruf von new InitialContext() kann nicht funktionieren, diese JVM hat ja dann keine Ahnung, dass da irgendwo ein JMS Server läuft und wie man auf den Namensdienst zugreift
Code:
   Hashtable properties = new Hashtable();
   properties.put(Context.INITIAL_CONTEXT_FACTORY,
      "org.exolab.jms.jndi.InitialContextFactory");
   properties.put(Context.PROVIDER_URL,
      "rmi://localhost:1099/");
   Context context = new InitialContext(properties);
 

noerion

Mitglied
hab ich schon gemacht, zwar in einer anderen Datei, aber das macht in diesem Fall nix. die Klasse wird ja nur aufgerufen.
wie gesagt, sonst hätte es ja auch mit der Topic nicht funktioniert
 

Bleiglanz

Gesperrter Benutzer
noerion hat gesagt.:
hab ich schon gemacht, zwar in einer anderen Datei, aber das macht in diesem Fall nix. die Klasse wird ja nur aufgerufen.
was ist die andere Datei?
wenn du das nicht global machst (mit properties im Cp) musst du es bei jedem Aufruf von new InitialContext machen?
 

noerion

Mitglied
ich hab es mal deinem Vorschlag angepasst und die ganzen Sachen in die Klasse geschrieben
jetzt sieht es so aus
Code:
public static javax.jms.QueueConnectionFactory getQueueConnectionFactory() 
      throws Exception {
        if (USE_JNDI) {
            return (javax.jms.QueueConnectionFactory) jndiLookup(QUEUECONFAC);
        } else {
            // return new provider-specific QueueConnectionFactory
        	Hashtable properties = new Hashtable(); 
        	properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.exolab.jms.jndi.InitialContextFactory"); 
        	properties.put(Context.PROVIDER_URL, "rmi://localhost:1099/"); 
        	InitialContext jndiContext = new InitialContext(properties);
        	     	
         return null;
        	}
    }
jetzt wirft er mir aber ne java.lang.NullPointerException. beim Debuggen stellt sich raus das der irgendwelche Probleme mit meinen JARs hat. irgendwelche Klassen nicht findet. ich hab grad mal nachgeschaut, die sind da. auch in den JARs die ich ihm gegeben habe. bin etwas ratlos!
 

Bleiglanz

Gesperrter Benutzer
>>jetzt wirft er mir aber ne java.lang.NullPointerException.

WO?

Classpath zur Runtime richtig?
 

LastUnicorn

Aktives Mitglied
Ich hab momentan auch das Problem, dass die jndi.properties nicht benutzt wird und es so zu einer Exception kommt.

Ich hab die aus dem JBoss/config/default Verzeichnis genommen und in den CLASSPATH bei den Umgebungsvariablen gesetzt, jedoch kommt es immer noch zur Exception:

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:640)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at mqtest.Ticker.NewsTickerSender.main(NewsTickerSender.java:32)



Ich werd noch wahnsinnig.....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JSON, API ... Anfänger braucht eure Hilfe Netzwerkprogrammierung 10
X Versenden von Objekten braucht zu lange Netzwerkprogrammierung 5
S Noob braucht dringend hilfe bei ftp-client Netzwerkprogrammierung 2
J Objekt mit RSA und AES verschlüsseln und entschlüsseln HILFE Netzwerkprogrammierung 4
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
KingSquizzi3 Website parsen mit Hilfe von jsoup funktioniert nicht Netzwerkprogrammierung 3
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
B JKS erstellen bitte um hilfe Netzwerkprogrammierung 1
R Hilfe bei FTP Netzwerkprogrammierung 7
D HTTP Bräuchte hilfe mit Http Requests Netzwerkprogrammierung 6
R Benötige Hilfe bei Routereinstellungen Netzwerkprogrammierung 7
E RMI RMI - Brauche Hilfe? Netzwerkprogrammierung 7
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
K Datenübertragung UDP Hilfe ????? Netzwerkprogrammierung 5
H Hilfe bei multiplen Clients Netzwerkprogrammierung 7
N Client - Server kurze Hilfe bitte Netzwerkprogrammierung 2
T IP Adresse mit Hilfe der MAC Adresse ermitteln Netzwerkprogrammierung 3
D Hilfe ich komme bei meinem UDP chat Server nicht mehr weiter Netzwerkprogrammierung 9
D Hilfe, meine HttpURLConnection hängt manchmal. Netzwerkprogrammierung 9
eQui Hilfe bei Chatprogramm Netzwerkprogrammierung 3
J Brauche hilfe bei Projekt: Netzwerk Chatprogramm Netzwerkprogrammierung 12
TRunKX Hilfe beim senden und empfangen Netzwerkprogrammierung 2
André B. Brauche Hilfe bei Chat Netzwerkprogrammierung 6
D Netzwerk Game, bitte hilfe. Netzwerkprogrammierung 2

Ähnliche Java Themen


Oben