Приложение Java EE в Tomcat - PullRequest
       48

Приложение Java EE в Tomcat

1 голос
/ 11 января 2010

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

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

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

Ответы [ 7 ]

2 голосов
/ 11 января 2010

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

1 голос
/ 11 января 2010

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

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

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

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

0 голосов
/ 11 января 2010
0 голосов
/ 11 января 2010

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

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

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

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

0 голосов
/ 11 января 2010

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

0 голосов
/ 11 января 2010

Это не подходит для сотен и тысяч пользователей.

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

0 голосов
/ 11 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...