Staram się zapoznać z JavaEE. Jestem trochę zdezorientowany, co do przeznaczenia każdego „komponentu” (z braku lepszego słowa): Session Beans i Servlets oraz jak prawidłowo współdziałają z aplikacją internetową ( JavaScript po stronie klienta).
Próbując to zrozumieć buduję prostą aplikację internetową. Jaki jest preferowany sposób użycia każdego komponentu do zbudowania czegoś podobnego do następującego:
- Użytkownik odwiedza stronę "Zaloguj się"
- Użytkownik wprowadza dane i przesyła dane o kliknięciach. Następnie wysyłam prośbę za pomocą AJAX o zalogowanie użytkownika.
- Strona serwera następnie sprawdza poprawność danych wprowadzonych przez użytkownika i „loguje” użytkownika (zwraca profil użytkownika itp.)
Czy wysyłając żądanie, mam wysłać je do serwletu (który używa EJB) czy do ziarna sesji przez WSDL? Jak mam zachować „stan” dla tego użytkownika przy użyciu którejkolwiek z metod? Zakładam, że w przypadku Session Beans jest to tak proste, jak dodawanie adnotacji za pomocą @Stateful.
Zakładam również, że żądania wysyłane ze strony klienta muszą być w formacie SOAP. Jak łatwo jest użyć czegoś lżejszego (takiego jak JSON)? Chociaż wolałbym użyć czegoś lekkiego, nie jest to konieczne, jeśli SOAP przyspiesza/łatwiej rozwija.
3 odpowiedzi
Samouczek Java Enterprise Edition dotyczy prawie wszystkich poruszanych tematów; jaki jest cel z różnymi rodzajami ziaren, jak zaimplementować usługi sieciowe, jak zaimplementować uwierzytelnianie itp.
Gorąco polecam poświęcenie czasu na zbudowanie przykładowej aplikacji, zwłaszcza jeśli jesteś całkowicie nowy w Java Enterprise Edition (Java EE). Ważne jest, aby dobrze zrozumieć podstawowe koncepcje, ponieważ określenie, na czym należy się skupić na początku, może być trudne ze względu na rozległość i głębię technologii oraz standardów, z których składa się Java EE.
Należy pamiętać, że chociaż Java EE z pewnością stara się wspierać najlepsze praktyki i umożliwiać projektowanie i tworzenie bezpiecznych aplikacji korporacyjnych, które dobrze działają i skalują się, nie nakazuje ani nie ogranicza aplikacji korporacyjnych do korzystania z jednego konkretnego protokołu, formatu danych i wzorzec projektowy aplikacji dla przedsiębiorstw. Niektóre protokoły i formaty są lepiej obsługiwane od razu przez podstawowe implementacje frameworka, a niektóre opcje są zależne od dostawcy, ale bardzo niewiele konkretnych opcji technologicznych jest zablokowanych w specyfikacji.
Aby odpowiedzieć na niektóre pytania, Java EE świetnie obsługuje protokół SOAP, ale nie preferuje ani nie ogranicza usług sieciowych do protokołu SOAP. Dzięki JAXB i JAX-RS równie łatwo można tworzyć usługi sieciowe zgodne z REST, które akceptują i zwracają XML lub JSON, lub jedno i drugie. Od Ciebie zależy, czy chcesz użyć protokołu SOAP, REST, czy innego protokołu.
To także Twój wybór, czy chcesz używać frameworków, takich jak JAX-RS, czy też tworzyć Servlety do obsługi żądań i odpowiedzi HTTP. W wielu przypadkach JAX-RS będzie miał wszystko, czego potrzebujesz, co oznacza, że będziesz mógł zaimplementować swoje usługi sieciowe jako zwykłe stare metody Javy z kilkoma adnotacjami, bez konieczności przejmowania się porządkowaniem i rozmieszczaniem zawartości i parametrów.
Podobnie w przypadku JAXB to od Ciebie zależy, czy chcesz używać WSDL, czy nie. To świetnie, jeśli masz definicje WSDL, ale nie ma problemu, jeśli ich nie masz.
W wielu przypadkach zazwyczaj utrzymuje się stan przy użyciu struktury Java Persistence Architecture (JPA) oraz uzyskuje się dostęp do takich danych i manipuluje nimi za pomocą bezstanowych komponentów bean sesji. Deweloperzy nowi w Javie EE często są kuszeni, aby używać stanowych komponentów sesji, aby utrzymać stan, który jest lepiej zarządzany w trwałej pamięci masowej. Samouczek przedstawia różne rodzaje ziaren i ich przeznaczenie.
Usługi sieciowe (WSDL, SOAP itp.) są zwykle używane do komunikacji między aplikacjami.
Wewnątrz pojedynczej aplikacji internetowej zwykle wykonujesz proste żądania GET/POST, używając lub nie AJAX, i otrzymujesz pełną stronę HTML lub fragment danych HTML (AJAX) lub XML lub JSON (AJAX). Przeglądarka zwykle komunikuje się z serwletem, ale rzadko używa się serwletów bezpośrednio.
Zwykłym sposobem jest użycie frameworka nad serwletami. Frameworki można podzielić na dwie duże kategorie: frameworki oparte na działaniu (Stripes, Spring MVC, Struts itp.) lub frameworki oparte na komponentach (JSF, Wicket, Tapestry itp.).
W aplikacji n-warstwowej wszystkie powyższe technologie mają zawierać tylko warstwę prezentacji. Ta warstwa prezentacji komunikuje się z warstwą biznesową, gdzie dzieje się rzeczywista logika biznesowa, gdzie transakcje są wykorzystywane do uzyskiwania dostępu do baz danych, systemów przesyłania wiadomości itp. W tej warstwie biznesowej wykorzystywane są EJB.
Możesz stworzyć podstawową architekturę w następujący sposób:
Utwórz EAR w ramach dwóch różnych projektów, takich jak EJB Jar i aplikacja internetowa WAR
Możesz tworzyć serwlety, które będą wywoływać pewną klasę delegata, która ma logikę odwołującą się do EJB.
ServletClass {
do/post(){
DelegateClass d = new DelegateClass();
d.callMethod(withParam);
}
}
DelegateClass {
@EJB
EJBlocalinterface ejbintance;
void callMethod(DefinPrarm){
ejbinstance.callEJBMethod();
}
}
@Statelss
EJBbeanClass implements EJBlocalinterface{
void callEJBmethod(someParam){
}
}
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].