Способ сохранить минимальную зависимость сервера приложений? - PullRequest
4 голосов
/ 24 августа 2010

Каков наилучший (самый простой, наиболее эффективный) способ создания приложения Java при минимальном использовании фактического сервера приложений, используемого при развертывании?

Например, скажем, я хочу выполнить развертывание наApache Geronimo, а потом захотите использовать GlassFish, насколько сложным будет переход?Как лучше всего абстрагироваться от использования каждого сервера приложений?

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

Спасибо за вашу помощь,

Иван

Ответы [ 4 ]

3 голосов
/ 24 августа 2010

Не вдаваясь в подробности, даже если вы можете писать простой код Java EE, конфигурация вокруг него не очень проста. Каждый сервер приложений имеет свой собственный набор файлов конфигурации и соглашений об именах (например, формат для указания местоположения AS отличается в IBM WAS и в JBOSS). Хотя они не очень важны для разработки приложений, как только вы перейдете к фазе развертывания, они станут важными. Что касается библиотек и вашего кода, поскольку вы придерживаетесь стандартов EJB, вы сможете запускать свое приложение на большинстве серверов приложений (я знаю о WAS и JBoss - код, который я написал, не должен был изменить для этих серверов, хотя конфигурация, ну, это был другой зверь!).

2 голосов
/ 24 августа 2010

В максимально возможной степени соблюдайте спецификацию Java EE, а в минимальной - следуйте спецификации сервера.

Если мы попытаемся выяснить, что общего у среди существующих серверов приложений Java EE ( JBoss , WAS ...), ответом будет Java EE спецификация, которой должны следовать поставщики серверов. Если у вас есть 2 решения для проблемы Java EE, вы можете проверить, какое решение лучше соответствует спецификации Java EE, чем спецификации сервера.

1 голос
/ 24 августа 2010

Исходя из моего опыта работы с Jboss и Sun AS, вы должны просто забыть о AS-независимости.

В sql, например, вы можете многое сделать, не используя специфичные для поставщика функции.Ну, это не так в Java EE.Для Jboss и SAS даже приложения «hello world» потребуют другой конфигурации.И чем больше приложений, тем больше функций, специфичных для поставщика, вам придется использовать.

В частности, если вы посмотрите официальный учебник Sun Java EE, вы обнаружите, что в нем используются специфичные для SAS файлы конфигурации (sun-web)..xml, sun-ejb-jar.xml и т. д.) с самого начала.

Но все вышеизложенное применимо, только если вы используете полный набор функций Java EE (таких как EJB, JMS, mbeans).Я обнаружил, что если у вас есть только сервлеты / jsps, упакованные в один военный архив, такое приложение все еще может быть очень переносимым.

0 голосов
/ 24 августа 2010

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

Лично я бы рассмотрел Glassfish 3.0.1 в такой ситуации, поскольку он является эталонной реализацией, поэтому, по крайней мере, все должно работать без особых усилий.

...