2010-01-11 3 views
1

Я разработал приложение Java EE.Приложение Java EE в tomcat

Теперь скажем sample.war - файл. Когда мы переносим это на webapps Tomcat, он взрывается в образец папки. Но если мы хотим запустить это приложение для двух человек, как мы это сделаем? что-то вроде http://address.com/user1/ и http://address.com/user2/, и в этом мы имеем разные CSS (только внешний вид меняется)

Или мы можем взять два поддомена и ссылку на одно приложение с разными стилями?

ответ

1

Возможные решения:

  1. В дескрипторе развертывания (web.xml) можно установить целевое развертывание имя (по умолчанию является .war имя).

  2. Переименуйте .war (user1.war user2.war) и разворачивайте его два раза.

Позаботьтесь о своих подключениях (база данных/файлы ...), которые используются приложениями.

+0

, так что вы говорите мне о двух линиях развертывания для двух клиентов и переименуйте файл войны соответственно. поэтому, когда приложение приходит, к нему могут обращаться оба клиента, не так ли? Могут ли эти URL-адреса или поддомены, если они еще есть. какой лучший вариант? !! – user237865

+0

Есть много разных решений! Вы можете использовать переписывание URL, чтобы заботиться о субдоменах. После развертывания приложение может использоваться обоими клиентами. Использует ли они одно и то же соединение с базой данных? Какое приложение вы развертываете и какие данные обрабатываются? Возможно, вам нужно сделать гораздо больше, чтобы обеспечить многоклиентские функции. Вы можете обрабатывать URL гораздо проще (см. JEE starndard.) –

0

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

+0

Если символические ссылки работают, зависит от реализации платформы и сервера приложений. –

+0

Я протестировал ее для работы с centos5/tomcat с небольшой конфигурацией. – futureelite7

0

Это не будет хорошо масштабироваться до 100 и 1000 пользователей.

Общая идея заключается в том, что ваши страницы имеют определенный уровень динамической способности. Прочитайте JSP как один из возможных приложений. Биты HTML генерируются во время выполнения, и одним из таких бит может быть выбор конкретной таблицы стилей на основе идентификатора пользователя или предпочтений, полученных из db.

0

Если стили являются вашим единственным изменением для каждого пользователя, я бы рекомендовал посмотреть, как Spring обрабатывает скины в своем веб-слое MVC. Либо используйте Spring, либо создайте что-то подобное, чтобы выполнить это. Вы должны использовать фильтр или контроллер для перенаправления пользователей на URL-адреса, которые будут использовать разные файлы CSS.

0

Если вы хотите развернуть одно и то же приложение дважды на двух «пути контекста» (не уверен, что вы подразумеваете под двумя людьми, но это то, что вы показываете в своих образцовых URL-адресах), но с разными L & F, просто пакет и развернуть две войны с собственным набором CSS, т.е. sample1.war и sample2.war. Я могу придумать вполне обоснованные причины, чтобы решить это (управление отдельными ресурсами, например, db pool, QoS и т. Д.).

Если вы используете Apache HTTPD как интерфейс, вы также можете создать два виртуальных хоста (например, для поддоменов user1.example.com и user2.example.com), переслать динамические запросы (JSP и сервлеты) к Apache Tomcat и поместить статические файлы (включая CSS) на уровне виртуальных хостов. Независимо от того, сопоставляете ли вы свои vhosts на одном или двух веб-страницах, действительно зависит от ваших потребностей. Как я сказал выше, существуют действительные варианты использования для развертывания войны дважды.

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

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

2

Вы можете просто поставить веб-приложение в контексте корня с <Context path="/"> и выбрать стиль, основанный на вошедшего пользователя или Pathinfo что-то вроде как <link href="${user.name}.css">.