Was ist die Beziehung zwischen Java: comp / env und java: global?
Was ist die Beziehung zwischen java:comp/env
und java:global
(in Bezug auf 3.1 Skillung)?
Scheint, wie java:comp/env
enthält spezifische EJB-Referenzen.
Was bedeutet "spezifische" in diesem Fall?
InformationsquelleAutor der Frage Yamahar1sp | 2011-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
java:global
ist ein namespace, die global für die gesamte Anwendung-server, die auch andere OHR-Module (die sind als andere Anwendungen).java:comp/env
ist ein viel kleinere namespace. Für das web-Modul, es entspricht auf alle web-Komponenten (servlets etc.), die alle zusammen als ein einziges 'Komponente' für JNDI, aber für EJB-beans ist es, einen namespace für eine einzelne Bohne, da jede Bohne wird als eine separate Komponente.Es gibt auch eine
java:app
und einjava:module
, deren Bereiche fallen zwischen globalen und comp.Einen großen Unterschied zwischen
java:comp/env
und das andere ist, dass die erstere ist streng Lesen-nur zur Laufzeit und enthält unter anderem die Bohnen, die injiziert werden in eine Komponente. So z.B. überlegen:In diesem Fall der proxy, injiziert wurde in das Feld
testBean
können auch erhalten werden ausjava:comp/env
, aber nur, wennjava:comp/env
verwiesen wird, die von innerhalb ExampleBean (JNDI ist stark Kontext -).Wenn Sie jedoch wollte einen anderen proxy auf EJB -
OtherBean
oder wollte eine Referenz, wenn keine Injektion erfolgt war, können Sie diese von jedem der anderen Bereiche. Je nachdem, aus welcher Klasse du machst das JNDI-Aufruf, Sie wäre in der Lage, kleinere Bereiche.Zum Beispiel, wenn
OtherBean
definiert ist, in der selben Modul wieExampleBean
könnten Siejava:module
, wenn es dieselbe Anwendung (jedoch möglicherweise verschiedene Module), die Sie verwenden könnenjava:app
.Schließlich
java:global
ist stets sicher zu verwenden, da es nicht hängt vom Kontext ab. Das heißt, Sie könnten die Verwendung von innerhalb z.B. einer nicht verwalteten völlig separaten thread. Der Nachteil bei der Verwendungjava:global
ist, dass Sie enthalten die Namen der Anwendung und den Namen des Moduls, wenn ein OHR eingesetzt wird, und ansonsten zumindest den Namen des Moduls.InformationsquelleAutor der Antwort Arjan Tijms