[ Pobierz całość w formacie PDF ]
.Daje on serwletom możliwość obsługi EJB przy pomocy abstrakcyjnej nazwy.Wdrożeniowiec zapewniadostępność odpowiedniego elementu w trakcie uruchamiania w oparciu o ograniczenia podane w znaczniku.Znacznik ten może zawierać znaczniki , , , , i.Poniżej przedstawiony jest typowy :Kabiny na statku wycieczkowymejb/KabinaPoczEntitycom.tytan.kabina.KabinaPoczcom.tytan.kabina.KabinaPowyższe znaczniki posiadają również swoje odpowiedniki w EJB, i właściwie przykład ten jest zapożyczony zksiążki Enterprise JavaBeans autorstwa Richarda Monson-Haefela (O'Reilly).nadajenazwę do poszukiwań JNDI.Poleca się (chociaż nie jest to konieczne) umieszczenie nazwy w podkontekścieejb/, co sprawia, że pełna ścieżka do elementu to java:comp/env/ejb/KabinaGlowny.musi posiadać wartość Entity lub Session (są to typy elementów EJB3).Natomiast elementokreśla pełną nazwę klasy interfejsu właściwego EJB, podczas gdy element określa PNKinterfejsu zdalnego EJB.Serwlet może odczytać odwołanie do elementu Kabina przy pomocy następującego kodu:InitialContext poczKontekst = new InitialContext();Object odw = poczKontekst.lookup("java:comp/env/ejb/KabinaPocz");KabinaPocz pocz = (KabinaPocz) PortableRemoteObject.narrow(odw, KabinaPocz.class);Jeżeli monter tworzący plik web.xml chce umieścić w odwołaniu EJB konkretny element EJB, informacja tamoże zostać przekazana wdrożeniowcowi przy pomocy opcjonalnego elementu.Element powinien odwoływać się do komponentu EJB zarejestrowanego w deskryptorze EJB wtej samej aplikacji J2EE.Wdrożeniowiec posiada możliwość skorzystania z sugestii bądz opuszczenia jej.Poniżej przedstawiona jest uaktualniona pozycja web.xml:Kabiny na statku wycieczkowymejb/KabinaPoczEntitycom.tytan.kabina.KabinaPoczcom.tytan.kabina.KabinaKabinaElementOdwołania do zewnętrznych fabryk zasobówOstatecznie, w przypadkach, w których pozycja środowiskowa to fabryka zasobów, wykorzystuje się znacznik.Fabryka to obiekt, który na żądanie tworzy inne obiekty.Fabryka zasobów tworzy obiektyzasobów, takie jak połączenia z bazami danych lub kolejki wiadomości.Znacznik może zawierać znaczniki , , i.Poniżej przedstawiony jest typowy znacznik :3Specyfikacja Servlet API 2.2 głosi, że element ejb-ref-type zawiera przewidywany typ klasy Javy dla EJBstanowiącego cel odwołania.Jest to potwierdzony błąd.Właściwy cel jest taki, jak wymieniony powyżej.Podstawowa baza danychjdbc/podstawBDjavax.sql.DataSourceCONTAINERW tym przypadku również służy jak wsparcie dla wdrożeniowca i jest opcjonalny, alepolecany.zawiera nazwę do poszukiwań JNDI.Poleca się, lecz nie jest to wymagane, abyfabryki zasobów były umieszczane w podkontekście, który określa typ zasobów:" jdbc/ dla fabryki JDBC javax.sql.DataSource" jms/ dla javax.jms.QueueConnectionFactory lubjavax.jms.TopicConnectionFactory JMS" mail/ dla fabryki JavaMail javax.mail.Session" url/ dla fabryki java.net.URLElement określa PNK fabryki zasobów (a nie utworzonego zasobu).Typy fabryk na powyższejliście to typy standardowe.Serwer posiada możliwość obsługi dodatkowych typów; nie mogą zostaćzastosowane fabryki użytkownika.Specyfikacja nadchodzącej wersji 1.3 J2EE zawiera mechanizm łącznikasłużący do rozszerzania tego modelu o fabryki zdefiniowane przez użytkownika.służy do przekazania serwerowi informacji, kto jest odpowiedzialny za uwierzytelnianie.Znacznik ten może posiadać dwie wartości CONTAINER lub SERVLET.Jeżeli jego wartość wynosiCONTAINER, wtedy kontener serwletów (serwer J2EE) obsługuje uwierzytelnianie przed dowiązaniem fabrykido JDNI, przy pomocy danych dostarczonych przez wdrożeniowca.Jeżeli wynosi SERVLET, uwierzytelnieniemusi zostać przeprowadzone programowo przez serwlet.Poniższy kod przedstawia ten mechanizm:InitialContext poczKontekst = new InitialContext();DataSource zrodlo = (DataSource) poczKontekst.lookup("java:comp/env/jdbc/podstawBD");// Jeżeli "CONTAINER"Connection pol1 = zrodlo.getConnection();// Jeżeli "SERVLET"Connection pol2 = zrodlo.getConnection("user", "password");Powyższe znaczniki również posiadają swoje odpowiedniki w deskryptorze EJB.Jedyną różnicą jest fakt, że wEJB dwie możliwe wartości to Container i Application (proszę zauważyć niewyjaśnionąróżnicę w wielkości liter).Dystrybucja serwletów w środowisku J2EEOstatnia różnica pomiędzy serwletami w środowisku samodzielnym i serwletami w środowisku J2EE związanajest z niewielką zmianą w zasadach dystrybucji sesji.Podczas gdy standardowy serwer WWW musi obsługiwaćw sesji jedynie obiekty java.io.Serializable aplikacji dystrybuowalnej, serwer zgodny z J2EE, któryobsługuje dystrybuowalny kontener serwletów musi również obsługiwać kilka dodatkowych typów obiektów:" każdy javax.ejb.EJBObject" każdy javax.ejb.EJBHome" każdy javax.transaction.UserTransaction" javax.naming.Context dla java:comp/envWszystkie powyższe interfejsy to interfejsy, które nie wykorzystują Serializable.W celu przeniesieniatych obiektów kontener może wykorzystać swój własny mechanizm, który może (ale nie musi) być oparty naserializacji.Dodatkowe typy klas mogą być obsługiwane w zależności od serwera, ale powyższe to jedyne typy,których obsługa jest gwarantowana
[ Pobierz całość w formacie PDF ]