Ucho vs oddzielna EJB + wojna
Jaka jest różnica we wdrożeniu aplikacji jako EAR (z 1 EJB i 1 modułem WAR) w porównaniu z oddzielnymi modułami? Chcę użyć profilu internetowego GlassFish 3, ale nie obsługuje on EAR archive. Czy Mogę używać EJB i WAR jako oddzielnych modułów? Jakieś inne opcje?
2 answers
Wydaje się być pewne zamieszanie pomiędzy 3 wariantami rozmieszczenia:
- ucho, które zawiera moduł EJB i WEB
- wdrażanie oddzielnego modułu EJB i oddzielnego modułu WWW
- wdrażanie modułu internetowego zawierającego klasy EJB lub jar EJB.
W pierwszej sytuacji masz logicznie jedną aplikację, ale podzieloną na dwa poziomy. Moduł WEB jest odizolowany od modułu EJB w tym sensie, że może korzystać z klas z modułu EJB, ale moduł EJB nie może korzystać z klas z modułu WEB. Ponieważ jest to pojedyncza aplikacja, lokalny dostęp do EJB beans może być używany, a Wtrysk EJB Beans działa zgodnie z oczekiwaniami.
W drugiej sytuacji (do której zdaje się odnosisz się w swoim pytaniu) nie ma logicznej pojedynczej aplikacji, ale tak naprawdę dwa oddzielne moduły. Działają one w tym samym JVM, ale oficjalnie Java EE nie pozwala na korzystanie z dostępu lokalnego i dostęp zdalny musi być używany (choć praktycznie dostęp lokalny często i tak działa). Ponadto, wstrzyknięcie EJB beans w module internetowym nie działa bezpośrednio z prostą adnotacją @EJB
, ale zamiast tego należy użyć atrybutu lookup
, który określa globalną nazwę JNDI.
Wreszcie, trzecia sytuacja (o której chyba nie wspominasz, ale "home" wspomina) jest trochę podobna do pierwszej, ale nie ma w tym przypadku poziomów i izolacji. EJB beans może uzyskać dostęp do wszystkich klas bezpośrednio z reszty modułu WWW.
Profil www obsługuje tylko tę ostatnią sytuację wdrożenia. Zarówno EAR, jak i samodzielne wdrożenia EJB nie są obsługiwane.
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-08-06 22:52:44
Jaka jest różnica we wdrożeniu aplikacji jako ear (z 1 ejb i 1 modułem wojennym) w porównaniu z oddzielnymi modułami?
Nie pełna lista: w uchu można zdefiniować słoiki użytkowe jak również znajdują się w np. EAR/lib i mogą być ponownie użyte przez WARs i EJB JARs. Często pliki EAR zapewniają funkcje prorietary deployment, np. w WebSphere można określić szczegóły DataSource, dzięki czemu nie trzeba definiować źródła danych (i sterownika JDBC) za pomocą utylizatorów zarządzania.
Ponieważ chcę użyć Glassfish 3 web profile, ale nie obsługuje ear archive. Czy Mogę używać ejb i war jako oddzielnych modułów? Jakieś inne opcje?
Tak, Specyfikacja profilu www wyraźnie pozwala na wdrożenie lekkiej wersji EJB w ramach WAR . Wystarczy umieścić EJB JAR wewnątrz WARs WEB-INF/lib
. Ten link zapewnia Porównanie funkcji (profil internetowy vs full-blown): http://glassfish.java.net/downloads/v3-final.html
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-08-06 18:26:36