Czy nadal jest przydatna implementacja EJB z RMI, gdy można zaimplementować Usługi internetowe (SOA/REST)?

To może brzmieć podobnie do tego , ale tak nie jest.

Trochę rozumiem EJB i RMI i od jakiegoś czasu pracuję z serwisami WWW pod SOA. Chcę wiedzieć dlaczego warto pracować z EJB wystawiając zdalne interfejsy pod RMI zamiast publikować Usługi internetowe (SOA / REST, ale głównie SOA). Nie pytam, który z nich jest lepszy, po prostu chcę znać bardzo dobry powód, dlaczego powinienem preferować implementację EJB ze zdalnymi interfejsami nad usługami sieciowymi.

Mam przeglądałem wiele stron internetowych, ale wszystkie wydawały się nieaktualne. Do tej pory mam tylko to, że EJB jest lepszy niż ws przy integracji z systemem Java legacy. Jeśli chcę zarządzać transakcjami, mogę zaimplementować EJB z lokalnymi interfejsami. Również nie sądzę, że wybór EJB zamiast RMI jest bardziej wydajny niż interfejs usługi internetowej.

Mam rację? Coś mi umyka?

Naprawdę dziękuję z góry.

Author: Community, 2012-04-18

3 answers

Ejby są lepsze jeśli

  • musisz wykonać liczbę połączeń, które powinny być wykonane w jednym transakcyjnych (teoretycznie mamy usługi transakcyjne, ale nie każda implementacja je dostarcza), (stanowe) EJB świecą, jeśli chodzi o zarządzanie transakcjami. Prawie zawsze potrzebujesz stateness EJB byłby lepszy niż Web Service;
  • you need performence-Web Usługi są powolne-wykorzystują XML/JSON przepychany przez HTTP, RMI nad Protokół IIOP używany przez EJB jest o wiele bardziej efektywny;
  • Musisz połączyć się z jakimś starszym systemem, który używa przestarzałych specyfikacji dla Java Web Services (brzydkie rzeczy Axis 1.0, nie kompatybilne z JAX - WS) może być koszmarem łączenie wszystkiego z usługami internetowymi, radzenie sobie z niezgodnymi definicjami WSDL, dziwne koperty SOAP. EJB są kompatybilne wstecz, Stary EJB 2 może być podłączony bez żadnego problemu z EJB 3.1;
  • współczesny EJB (EJB 3.X) mogą udostępniać swój interfejs jako usługę JAX-WS SOAP/WSDL lub usługę JAX-RS REST poprzez dodawanie dwóch lub trzech prostych adnotacji

Dlaczego (REST)Serwisy internetowe są tak popularne? EJB można podłączyć tylko do innej aplikacji Java. Większość nowoczesnych aplikacji Rich Internet jest napisana w języku JavaScript, więc jedynym sposobem, aby połączyć je z dowolnym backendem, jest użycie jakiegoś rodzaju usługi internetowej (Zwykle REST + JSON). Dla takich aplikacji EJB są dość bezużyteczne.

 21
Author: Piotr Kochański,
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
2012-04-17 20:19:24

Zarówno klient, jak i usługa muszą być napisane w języku Java, jeśli używasz RMI jako protokołu wire.

SOAP używa XML przez HTTP, a REST używa czystego HTTP do komunikacji między Klientem a usługą. Każdy koniec rozmowy może być napisany w dowolnym języku, który może wysyłać odpowiednie żądania przez HTTP, co jest znacznie mniej restrykcyjne.

Myślę, że jest to jeden z powodów, dla których Usługi internetowe przez HTTP wygrały nad RMI. Prosta i otwarta wygrana, za każdym razem.

 6
Author: duffymo,
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
2012-04-17 20:07:59

Są to różne rzeczy do różnych celów.

EJB są przeznaczone do użytku w systemie N-tierowym, który jest ściśle sprzężony i masz kontrolę nad wszystkimi elementami. Oferują one bezpośrednie kodowanie w języku przy użyciu czegoś, co wydaje się być zwykłymi wywołaniami metod, oraz wydajność typu LAN przez IIOP lub jakikolwiek inny protokół wdrożony przez dostawcę EE.

SOAP / REST jest najlepszy do użytku w Internecie, lub w B2B lub innych sytuacjach, w których nie masz kontroli nad obu końcach i Ty potrzebujesz luźnego sprzęgła. Uzyskujesz znacznie wolniejszą wydajność ze względu na cały XML, ale otrzymasz również standardowy protokół branżowy w środku, który zapewnia ochronę obu końców przed problemami z pojedynczym zaopatrzeniem.

 6
Author: user207421,
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
2012-04-18 07:52:49