Jaki jest związek pomiędzy java: comp / env a java: global?

Jaki jest związek pomiędzy java:comp/env i java:global (odnośnie 3.1 spec)?
Wygląda na to, że java:comp/env zawiera odniesienia specyficzne dla EJB. Co oznacza "konkretny" w tym przypadku?

Author: Yamahar1sp, 2011-09-18

1 answers

java:global jest przestrzenią nazw, która jest globalna dla całego serwera aplikacji, który zawiera inne moduły EAR (które są uważane za różne aplikacje).

java:comp/env jest dużo mniejszą przestrzenią nazw. Dla modułu web odpowiada on wszystkim komponentom web (servletom itp.), które są razem uważane za pojedynczy "komponent" dla JNDI, ale dla EJB beans jest to przestrzeń nazw dla pojedynczej fasoli, ponieważ każda fasola jest uważana za oddzielną komponent.

Istnieje również java:app i java:module, których zakresy mieszczą się między global i comp.

Duża różnica między java:comp/env a innymi jest taka, że pierwszy jest tylko do odczytu w czasie wykonywania i zawiera między innymi ziarna, które są wstrzykiwane do jakiegoś komponentu. Więc np. rozważ:

@Stateless 
public class ExampleBean {

    @EJB
    OtherBean testBean;

}

W tym przypadku, konkretny proxy, który został wstrzyknięty do pola testBean można również uzyskać z java:comp/env, ale tylko wtedy, gdy {[2] } jest odwołany z ExampleBean (JNDI jest bardzo kontekstowe).

Jeśli jednak chciałeś innego proxy do EJB OtherBean, lub chciałeś referencji, gdy nie wykonano wstrzyknięcia, możesz je uzyskać z dowolnego innego zakresu. W zależności od klasy, z której wykonujesz połączenie JNDI, będziesz mógł korzystać z mniejszych zakresów.

Na przykład, jeśli {[9] } jest zdefiniowany w tym samym module co ExampleBean, możesz użyć java:module, jeśli jest to ta sama aplikacja (ale prawdopodobnie różne moduły), możesz użyć java:app.

Wreszcie, java:global jest zawsze bezpieczny w użyciu, ponieważ nie zależy od kontekstu. Oznacza to, że możesz użyć np. niezarządzanego całkowicie oddzielnego wątku. Minusem używania java:global jest to, że musisz podać nazwę aplikacji i nazwę modułu, jeśli używane jest ucho, a w przeciwnym razie przynajmniej nazwę modułu.

 40
Author: Arjan Tijms,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-18 09:29:17