Zitieren von https://web.archive.org/web/20140227201242/http://v1.dione.zcu.cz/java/docs/jndi-1.2/tutorial/beyond/misc/policy.html
Im Stammkontext des Namespace befindet sich eine Bindung mit dem Namen "comp", die an einen Teilbaum gebunden ist, der für komponentenbezogene Bindungen reserviert ist. Der Name "comp" steht für component. Es gibt keine anderen Bindungen im Stammkontext. Der Stammkontext ist jedoch für die zukünftige Erweiterung der Richtlinie reserviert, insbesondere für die Benennung von Ressourcen, die nicht an die Komponente selbst, sondern an andere Entitätstypen wie Benutzer oder Abteilungen gebunden sind. In zukünftigen Richtlinien können Sie beispielsweise Benutzer und Organisationen / Abteilungen mithilfe von Namen wie "java: user / alice" und "java: org / engineering" benennen.
Im Kontext "comp" gibt es zwei Bindungen: "env" und "UserTransaction". Der Name "env" ist an einen Teilbaum gebunden, der für die umgebungsbezogenen Bindungen der Komponente reserviert ist, wie im Bereitstellungsdeskriptor definiert. "env" steht für Umwelt. Das J2EE empfiehlt (erfordert jedoch nicht) die folgende Struktur für den Namespace "env".
Die Bindung, die Sie aus dem Frühjahr oder beispielsweise aus einem Tomcat-Kontextdeskriptor vorgenommen haben, wird standardmäßig unter Java angezeigt: comp / env /
Zum Beispiel, wenn Ihre Konfiguration ist:
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="foo"/>
</bean>
Dann können Sie direkt darauf zugreifen, indem Sie:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/foo");
oder Sie können einen Zwischenschritt ausführen, damit Sie nicht für jede Ressource, die Sie abrufen, "java: comp / env" angeben müssen:
Context ctx = new InitialContext();
Context envCtx = (Context)ctx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("foo");
jdbc/loc
und somitjava:comp/env/jdbc/loc
richtig sind), während die Antwort von Cherouvim impliziert, dass Sie das erste Beispiel falsch verwendet haben (java:comp/env/jdbc/loc
und somitjdbc/loc
richtig sind). Unabhängig davon lautet die eigentliche Antwort: Es hängt vom aktuellen Kontext ab.