Die Bedeutung von NoInitialContextException Fehler
Schreibe ich einen client für mein EJB und wenn man versucht, es auszuführen, bekomme ich die folgende exception :
javax.naming.NoInitialContextException
: Angeben muss, Klasse name
in der Umwelt-oder system-Eigenschaft oder als applet-parameter oder in einem
Anwendung Ressource-Datei.
Ich kann einfach nicht verstehen, was das problem ist.
- Wenn Sie neu in J2EE-überprüfen Sie die JNDI-Abschnitt java.sun.com/docs/books/tutorial
- In meinem hat, es war eine dumme <session-factory name=""> finden Sie unter stackoverflow.com/questions/6293052/...
- docs.oracle.com/javase/tutorial/jndi/ops/faq.html#1
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
javax.naming
Paket besteht aus dem JNDI-API. Da es nur eine API, sondern als eine Implementierung, die Sie brauchen, um es anzuweisen, die Umsetzung der JNDI verwenden. Die Implementierungen sind in der Regel spezifisch für den server, den Sie versuchen zu sprechen.Angeben, Umsetzung, übergeben Sie in einem
Properties
- Objekt beim erstellen derInitialContext
. Diese Eigenschaften geben an, die Umsetzung zu verwenden, sowie der Standort des Servers. Die Standard -InitialContext
Konstruktor ist nur nützlich, wenn es gibt Systemeigenschaften vorhanden, aber die Eigenschaften sind die gleichen, wie wenn Sie übergeben Sie Sie manuell.Welche Eigenschaften gesetzt werden müssen, das hängt von Ihrem server. Sie müssen zu jagen und diese Einstellungen nach unten und schließen Sie Sie in.
Sollten Sie jndi.Eigenschaften. Ich habe unten einige Stück code, die erklären, wie die Eigenschaften sind für den activemq. Wie können Sie für Ihre Anwendung festlegen. Innerhalb einer J2EE-container wie JBoss keine Notwendigkeit, um diese Eigenschaften festzulegen.
Ich weiß, das ist eine späte Antwort, aber nur geben Sie für zukünftige Referenz.
müssen Sie legen Sie die folgenden Namen/Wert-Paare in eine hash-Tabelle, und rufen Sie diesen Konstruktor:
die genauen Werte hängen vom application server in diesem Beispiel wird für jboss
Ist eine JNDI-problem. Sie werden sehen, dass Ausnahme, wenn der
InitialContext
Klasse hat weder Standard-Eigenschaften für den JNDI-service-provider, noch explizit konfigurierten server-Eigenschaften.Legen Sie die
Context.INITIAL_CONTEXT_FACTORY
Umfeld-Eigenschaft auf den Namen der Klasse von der ersten Kontext-Implementierung, die Sie verwenden. Diese Klasse muss verfügbar sein, um Ihr Programm in den classpath.Check:
http://docs.oracle.com/javase/7/docs/api/javax/naming/InitialContext.html
http://java.sun.com/products/jndi/tutorial/getStarted/TOC.html (runtime Probleme)
Speziell, ich habe dieses Problem, wenn Sie versuchen zum abrufen der default - (no-args)
InitialContext
innerhalb einer eingebetteten Tomcat7-Instanz, in SpringBoot.Die Lösung für mich war, zu sagen Tomcat zu
enableNaming
.d.h.
Einfach & konfigurierbare Lösung ist, erstellen Sie eine jndi.Eigenschaften-Datei und legen Sie diese Datei im classpath.
jndi.Eigenschaften können erstellt werden, wie
Geben Sie einfach Ihre Benennung Werk - & url und fügen Sie diese Datei in den classpath. JMS holt sich benötigte Infos von selbst, und es ist leicht konfigurierbar in Zukunft auch.
Meisten der Zeit, werden diese Einstellungen auch definiert
jndi.properties
- Datei. Hast du eine irgendwo herumliegen?Gelöst ich das gleiche problem durch hinzufügen der folgenden Jar-Bibliotheken zu meinem Projekt:
aus dem Ordner :
C:\Program Files\glassfish-4.0\glassfish\lib
Die links zu diesen Bibliotheken wurden gebrochen und Netbeans nicht das richtige gefunden-Klassen zu verwenden.
Mein problem mit diesem war, dass ich die Schaffung einer hibernate-session, aber hatte die JNDI-Einstellungen für meine Datenbank-instance falsch, weil ein classpath-problem. Nur zur info...
müssen Sie jboss-client.jar im client-Projekt, und Sie müssen, verwenden Sie none-client-jar-Datei in Ihrem ejb-Projekt
stellen Sie sicher, dass Abhängigkeiten zur Anlegestelle der Benennung und der jetty-plus sind im Lieferumfang enthalten (nicht nur Rahmen).
Diese Feste für mich.
Hierzu:
Auch in den Bibliotheken des Projekts:
C:\installs\glassfish\glassfish-4.1\glassfish\lib\gf-client.jar
passen Sie den Pfad entsprechend