Ответ 1
EJB построены поверх RMI. Оба подразумевают Java-клиенты и beans. Если ваши клиенты должны быть написаны во что-то еще (например,.NET, PHP и т.д.), Переходите к веб-службам или к чему-то еще, что говорит о прокси-протоколе с платформой-агностиком, например HTTP или XML через HTTP или SOAP.
Если вы выбрали RMI, вам не нужен сервер приложений Java EE EJB. Вы должны синхронизировать JVM клиента и сервера; вы не можете обновить клиент, не обновляя сервер. Вам необходимо написать все службы, которые предоставляет вам сервер приложений EJB (например, объединение пулов, услуги именования и каталогов, объединение в пул, очередь запросов, транзакции и т.д.).
RMI довольно низкий уровень, когда вы об этом думаете. Почему бы вам полностью отказаться от CORBA?
Лучше выбрать EJB 3.0 по сравнению с Spring. Это зависит от того, нравится ли вам разработка POJO, и, кроме всего прочего, выбирать реляционные технологии помимо ORM и JPA.
Вы можете заплатить за сервер приложений Java EE (например, WebLogic, WebSphere) или использовать открытый исходный код (JBOSS, Glassfish и OpenEJB и ActiveMQ), или вы можете придерживаться Spring и развертывать на Tomcat, Jetty, Смола или любой другой сервлет/двигатель JSP.
Spring предлагает большой выбор, будучи агностикой технологии: persistence (Hibernate, iBatis, JDBC, JDO, JPA, TopLink), удалением (HTTP, Hessian, Burlap, RMI, веб-службой SOAP) и т.д.
EJB 3.0 - спецификация со многими поставщиками; Spring может быть получен только из Spring источника.
Я бы порекомендовал Spring. Он очень прочный, имеет большую тягу, никуда не денется. Он оставляет все ваши варианты открытыми.
Веб-сервисы велики в теории, но есть некоторые ошибки, которые вам нужно соблюдать:
- Задержка. Фаулер первый закон распределенных объектов: "Не надо!" Архитектура, состоящая из множества мелкозернистых распределенных SOAP-сервисов, будет элегантной, красивой и медленной, как меласса. Подумайте внимательно, прежде чем распространять.
- Маршаллинг из XML в объекты и обратно потребляет циклы ЦП, которые не обеспечивают каких-либо бизнес-преимуществ, кроме того, что позволяет вашим клиентам говорить протокол-агностик.
- SOAP - это стандарт, который становится все более раздутым и сложным с каждым днем, но в нем много поддержки инструмента. Продавцам это нравится, потому что это помогает стимулировать продажи ESB. REST прост, но не так хорошо понят. Он не поддерживается инструментами.
Spring модуль веб-сервиса очень хорош, но будьте осторожны при выборе развертывания таким образом. Напишите в терминах интерфейсов обслуживания POJO. Это позволит вам получить концептуальную изоляцию, которую вы хотите, отложить выбор развертывания до последнего момента и позволить вам передумать, если первая мысль не будет работать хорошо.