javax.naming.NoInitialContextException

lernen.2007

Erfahrenes Mitglied
Hallo Leute,

ich habe so was:

Class classe = Class.forName(klasseName);
return classe.newInstance();

Es findet die Klasse mit Class.forName aber wenn ich mit classe.newInstance() machen will gibt er die 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

Was kann der Fehler hier sein?

Danke
 
Hallo!

1) Je nachdem welchen JNDI Provider du verwendest musst du entsprechende System properties setzten. In der Regel ist bei dem verwendeten JNDI Provider (Application Server) eine entsprechende jndi.proeprties Datei dabei welche die entsprechenden Settings (java.naming.factory.initial, Servername, Port) beinhaltet... es reicht auch diese Datei (in entsprechend angepasster Form) in den Classpath der Anwendung zu legen. Dann klappts auch mit der Erzeugung des InitialContext's
2) Les dir endlich mal ein J2EE Grundlagenbuch durch...

Gruss Tom
 
Hallo,

ich habe mich schon ein bisschen mit J2EE beschäftigt. Meine Frage ist: die jndi.properties befindet es sich bei mir unter Ordner JBOSS/conf. Ich lasse die JBOSS laufen und will etwas mit jndi abfragen und bekomme immer noch die gleiche Exception.Was kann der Grund dafür sein?

So frage ich ab:
Context ctx = new InitialContext();
Object obj = ctx.lookup(Name);

Danke
 
Wie vorherige 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


Danke
 
Hab gerade sowas beantwortet. Haar genau das selbe Problem.

http://www.tutorials.de/forum/j2ee/245833-zugriff-auf-sessionbbean-auf-externem-jboss.html


Programmierst du gerade ein Client der ausserhalb von JBoss in seiner eigenen JVM läuft dann bekommst du ohne die definierten Properties (und nicht jene in Jboss/conf) keinen brauchbaren Context.

Darum musst du jene Properties anlegen (ob im Code, oder durch eine properties Datei die gefunden werden kann, ist zweitrangig).
Wie das geht steht oben (siehe link)
 
Zuletzt bearbeitet:
Ich habe jetzt meinen Code so umgeschrieben:

String urlName = "jnp://localhost:1099";
Properties p = new Properties();
p.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
p.put("java.naming.provider.url", urlName);
p.put("java.naming.factory.url.pkgs", "org.jboss.naming:eek:rg.jnp.interfaces");


try{
InitialContext jndiContext = new InitialContext(p);
jndiContext.lookup("java:/jca/Name");

}
catch(Exception ex){
System.out.println(ex.getMessage());
}

Es kommt jetzt die Exception = NameNotFound. Aber dieser Name ist ja schon vorhanden. Wie geht es jetzt weiter?Wie kann ich prüfen oder woher weiss man ob das jnp://localhost:1099 richtig ist?

Danke
erkan.erpolat
 
Zuletzt bearbeitet:
sorry, aber ich kann dir nur empfehlen dir das:

J2EE Tutorial auf der Sun Seite durchzulesen, oder dir passende Bücher zu besorgen, und ein paar Wochen damit intensiev zu arbeiten. Denn jeden einzelnen Schritt zu erklären kann nicht Sinn des Forums sein.
 

Neue Beiträge

Zurück