2009-08-26 3 views
3

У меня есть приложение J2EE, которое должно быть распространено среди клиентов, у которых будут серверы приложений по своему выбору. Каков рекомендуемый способ написания сценария сборки, который бы скомпилировал источники приложений J2EE (на клиентских сайтах), чтобы они могли в конечном итоге развернуть приложение на своих серверах?Скрипт сборки приложения-агностик

Кроме того, какие JAR следует использовать во время процесса компиляции? Поскольку это предназначено для агностического сценария сервера приложений, рекомендуется ли использовать JAR (скажем, servlet.jar, jms.jar, ejb.jar и т. Д.) С сервера приложений, вместо того, чтобы мои клиенты загружали эти JAR из определенного хранилище? Есть ли такой репозиторий, который рекомендуется для таких JAR (JARs J2EE API)?

PS: Файл EAR не может быть построен на месте и отгружается потребителям, поскольку дополнительное развитие будет осуществляться при каждой установке для интеграции с другими системами, выполнять настройки по применению и т.д.

+0

Я не понимаю, почему вы хотите, чтобы клиенты для создания вашего приложения. Как правило, вы должны создать приложение в ушных файлах, содержащих ваши банки и войны, и развернуть их на сервере приложений. Тем не менее, вам все равно понадобятся дескрипторы развертывания сервера приложений. – Kolibri

+0

Да, в идеале я бы отправил эти банки, но это довольно часто для того, чтобы настройки выполнялись в приложении. Фактически, самая важная причина, по которой файл EAR не отправляется, заключается в том, что развитие может происходить на каждом сайте (приложение будет интегрировано с партнерскими системами, некоторые из которых не могут быть издевательскими из-за океана). –

ответ

1

Создайте приложение локально и распространите WAR/EAR-файлы клиенту.


Edit:

Ситуация вы описываете в основном, что вам нужно, чтобы обеспечить кодовую базу для дальнейшего развития заказчиком. В этом случае я предлагаю вам изучить создание модулей maven вашей работы, которые будут перенесены в приватный репозиторий, доступный клиенту. Затем вы сообщите им, что они должны зависеть от модуля X версии Y в своем pom.xml, а модуль X затем извлекает все библиотеки, необходимые в правильных версиях.

Обратите внимание: если они не используют Maven, они могут использовать Ant Ivy для разрешения зависимостей.

+0

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

+0

Ну, мы не заглянули в интернет-хранилище, так как мы не собираемся распространять JAR, но это то, что мы не исключаем. Я хотел бы, однако, знать, какие JAR-ы должны использовать для распространения в любом случае, например, где я должен идеально получить servlet.jar? Я не думаю, что было бы целесообразно разместить репозиторий с помощью servlet.jar (среди прочих), полученных от поставщика. –

+0

Не имеет значения, так как классы в нем принадлежат пространству имен/пакету, не загружаемому загрузчиком классов контейнеров. Я сделал патч для slf4j, где мы только что выбрали Geronimo. –

0

В принципе, не включают в себя контейнеры контейнера (servlet.jar, jms.jar, ejb.jar и т. д.) в вашем файле EAR или WAR.

Если вы просто говорите о servlet.jar, веб-контейнер обеспечивает это - вы не должны включать его в свой военный файл.

Если вы создаете файл EAR, вы должны использовать корпоративный контейнер, и он будет иметь JMS.jar и EJB.jar.

JMS на Tomcat будет немного сложнее - вам понадобятся люди, чтобы установить что-то вроде activemq на своих серверах.

+0

Согласовано о контейнере, предоставляющем банки. Но дело в том, что скрипт сборки понадобится во время компиляции.Я лично не думаю, что я должен пытаться обращаться к этим банкам, если у меня нет сценария сборки на сервер, и если я не знаю, где эти банки лежат на каждом сервере. –

+0

Кстати, приложение развертывается в контейнерах J2EE, поэтому Tomcat не является тем, на что наши клиенты развертывают приложение. –

+0

Эти банки поставляются с Java EE. – stevedbrown

1

Некоторые общие J2EE-банки API могут быть найдены на сайте Sun, однако вам, возможно, придется много копать, чтобы их найти.

я бы просто использовать любой JAR у вас есть под рукой, связать его с источником, но вдали от/WEB-INF/Lib

+0

Да, проблема заключается в копании. Предположим, что в базах Java API есть репозиторий, подобный репозиториям Maven, потому что было бы довольно легко указать людей на URL-адреса и поместить банки в каталог lib перед сборкой. –

+0

И если это уже не так уж плохо, Sun хочет, чтобы я загрузил полномасштабный сервер приложений, чтобы получить копию j2ee.jar и servlet.jar (также известный как SDK). –

+0

Thats для указания меня в правильном направлении. Я полагаю, что я мог бы получить банки, которые мне нужны для компиляции источников, из каждого отдельного JSR. –

Смежные вопросы