По-прежнему полезно реализовать EJB с RMI, когда вы можете реализовать веб-службы (SOA/REST)?
Это может показаться похожим на этот, но это не так.
Я как бы понимаю EJB и RMI, и некоторое время я работаю с веб-сервисами под SOA. Я хочу знать, почему полезно работать с EJB, предоставляя удаленные интерфейсы под RMI вместо публикации веб-сервисов (SOA/REST, но главным образом SOA). Я не спрашиваю, какой из них лучше, просто я хочу знать очень хорошую причину, почему я должен предпочесть реализовать EJB с удаленными интерфейсами через веб-службы.
Я просмотрел много веб-страниц, но все выглядело устаревшим. До сих пор у меня есть то, что EJB, отображающий удаленные интерфейсы, лучше, чем WS, при интеграции с прежней системой Java. Если я хочу управлять транзакциями, я мог бы реализовать EJB с локальными интерфейсами. Также я не думаю, что выбор EJB над RMI более эффективен, чем интерфейс веб-службы.
Я прав? Что-то мне не хватает?
В самом деле, спасибо заранее.
Ответы
Ответ 1
EJB лучше, если
- вам необходимо выполнить количество вызовов, которые должны выполняться в одном
транзакции (теоретически у нас есть транзакционные веб-службы, но не
каждая реализация обеспечивает их), (stateful) EJBs светят, когда дело доходит до управления транзакциями. Практически в любое время, когда вам нужно, чтобы обеспечить работоспособность EJB было бы лучше, чем веб-сервис;
- вам нужно работать - Web
Службы медленные - они используют XML/JSON, проталкиваемую через HTTP, RMI
Протокол IIOP, используемый EJB, более эффективен;
- вам нужно подключиться к какой-либо унаследованной системе, которая использует устаревшую спецификацию для Java Web Services (уродливый материал Axis 1.0, несовместимый с JAX-WS), это может быть кошмар, чтобы соединить все с веб-службами, иметь дело с несовместимыми определениями WSDL, странные конверты SOAP. EJB обратно совместимы, старый EJB 2 может быть подключен без каких-либо проблем с EJB 3.1;
- современные EJB (EJB 3.X) могут выставлять свой интерфейс в качестве службы JAX-WS SOAP/WSDL или службы REST JAX-RS, добавляя две или три простые аннотации
Почему (REST) веб-сервисы так популярны? EJB можно подключать только к другому Java-приложению. Большинство современных Rich Internet Applications написаны на JavaScript, поэтому единственный способ связать их с любыми бэкэнд - это использовать какой-то веб-сервис (обычно REST + JSON). Для таких приложений EJB довольно бесполезны.
Ответ 2
Как клиент, так и служба должны быть написаны на Java, если вы используете RMI в качестве проводного протокола.
SOAP использует XML через HTTP, а REST использует чистый HTTP для связи между клиентом и сервисом. Любой конец разговора может быть написан на любом языке, который может отправлять соответствующие запросы по HTTP, что гораздо менее ограничительно.
Я думаю, что это одна из причин, по которой веб-службы через HTTP выигрывают над RMI. Простой и открытый выигрыш, каждый раз.
Ответ 3
Это разные вещи для разных целей.
EJB предназначены для использования в системе N-уровня, которая тесно связана, и вы контролируете все элементы. Они предлагают прямое кодирование на языке, используя то, что кажется обычным вызовом метода, и производительность LAN-типа по сравнению с IIOP или любым другим протоколом, который развернул поставщик EE.
SOAP/REST лучше всего использовать в Интернете или в B2B или в других ситуациях, когда вы не контролируете оба конца, и вам нужна свободная связь. Вы получаете гораздо более медленную производительность из-за всего XML, но вы также получаете стандартный отраслевой протокол в середине, который дает обеим сторонам защиту от проблем с одним источником.