Преимущества и недостатки Java EE по сравнению с сервлетами - PullRequest
5 голосов
/ 12 августа 2009

Каковы основные причины использования Java EE (EJB) вместо простой реализации сервлета?

Я работаю над созданием нового проекта, который в первую очередь будет веб-службой, которая должна быть очень быстрой и масштабируемой.

Извините за путаницу, хотя у меня есть опыт работы с Java, я очень плохо знаком с веб-миром Java и, возможно, плохо задаю этот вопрос.

Ответы [ 4 ]

6 голосов
/ 12 августа 2009

Сервлеты являются прослушивателями HTTP-запросов; они не могут ответить ни на что другое.

Если вы внедрили много логики в сервлеты, она не будет доступна другим клиентам.

Напишите ваше приложение в POJO. Тщательно протестируйте его без участия сервера приложений. Затем подумайте о том, как вы хотите упаковать и развернуть его. Servlet? EJB? Веб-сервис? Что-то другое? Нет проблем - это просто вопросы упаковки и развертывания. Сначала установите правильное поведение в POJO.

Весна может дать вам много вариантов здесь. Я бы порекомендовал это.

6 голосов
/ 12 августа 2009

Спецификации EJB 1.x и 2.x добавили сложность, которая для большинства веб-приложений не требовалась.

Из-за этой сложности появились новые фреймворки, упрощающие разработку и архитектуру времени исполнения (Hibernate / Spring / другие микроконтейнеры / другие фреймворки ORM).

EJB 3.x соответствует этим изменениям (через JDO и JPA), и теперь использование сервлетов с этими улучшенными платформами или Java EE с EJB 3 + даст вам в основном те же результаты.

Использование сервера приложений Java EE добавит вам ряд административных преимуществ (графический интерфейс для управления пулами, журналами, мониторингом, транзакциями и т. Д.). Без них вы можете получить тот же результат, но вам придется делать все вручную. (редактирование конфигурационных файлов) Это может показаться не слишком проблематичным, но если вы планируете иметь администратора для своего веб-приложения, было бы лучше использовать инструменты администратора, которые поставляются с этими серверами «из коробки».

2 голосов
/ 12 августа 2009

Является ли веб-сервис без сохранения состояния? Если это так, я не вижу никакого реального преимущества в использовании полноценного сервера Java EE по сравнению с чем-то более легким, например Tomcat или Jetty. Вы можете развернуть реализацию jax-ws с любым из них и сделать то, что вам нужно, довольно легко. Если речь идет о каком-то состоянии, и вы захотите поделиться им с несколькими компьютерами, то здесь Java EE может пригодиться.

С учетом вышесказанного, я не думаю, что Java EE вообще снизит производительность. Серверы приложений обычно загружаются дольше и требуют больше усилий для управления, но после их запуска производительность должна быть примерно одинаковой.

1 голос
/ 12 августа 2009

Если вашим веб-службам, вероятно, потребуются какие-либо функции «уровня предприятия», такие как безопасность на уровне метода или транзакции, используйте EJB

С EJB 3 это на самом деле совсем не сложно, пара аннотаций, и все готово.

В противном случае достаточно простых POJO за сервлетом.

...