Jestem bardzo nowy w Javie EE i staram się zrozumieć koncepcję interfejsów lokalnych i interfejsów zdalnych.
W początkowych wersjach specyfikacji EJB „EJB” były „zakładane” jako komponenty zdalne, a jedynym sposobem na ich wywołanie było nawiązanie zdalnego połączenia przy użyciu semantyki RMI i całego związanego z tym narzutu (połączenie sieciowe i serializacja obiektu dla każdego wywołanie metody). Klienci EJB musieli ponieść tę karę wydajności, nawet gdy byli umieszczeni na tej samej maszynie wirtualnej z kontenerem EJB.
Później firma Sun zdała sobie sprawę, że większość aplikacji biznesowych nie dystrybuuje EJB na innym poziomie i naprawiła specyfikację (w EJB 2.0), wprowadzając koncepcję interfejsów lokalnych, dzięki czemu klienci kolokowani na tej samej maszynie wirtualnej z kontenerem EJB mogą wywoływać EJB za pomocą bezpośrednie wywołanie metody, całkowicie omijając semantykę RMI (i związane z tym koszty ogólne).
Powiedziano mi, że jedną z wielkich zalet Java EE jest łatwość skalowania (co moim zdaniem oznacza, że możesz wdrażać różne komponenty na różnych serwerach)
Java EE można skalować, ale niekoniecznie oznacza to dystrybucję komponentów. Możesz uruchomić aplikację Web + EJB w klastrze bez oddzielania warstwy Web i warstwy EJB.
Czy powinieneś używać interfejsów zdalnych, jeśli spodziewasz się, że Twoja aplikacja będzie mieć różne komponenty na różnych serwerach? I użyj Lokalnych interfejsów, jeśli Twoja aplikacja będzie znajdować się tylko na jednym serwerze?
Powiedziałbym to w ten sposób: użyj zdalnych interfejsów, jeśli klient nie jest w tej samej maszynie JVM (nie oznacza to, że używasz tylko jednego serwera / maszyny JVM).
(...) Zacznij od korzystania z interfejsów lokalnych i, w stosownych przypadkach, stopniowo przechodź na interfejsy zdalne?
Prawdopodobnie zacznę od korzystania z lokalnych interfejsów. I jak już wspomniano, przejście na zdalne interfejsy nie zawsze jest obowiązkowe (można grupować skolokowaną strukturę).
Sugeruję sprawdzenie zasobów wymienionych poniżej (2 pierwsze są dość stare, ale wciąż aktualne, pozostałe 2 są nowsze).
Zasoby