Как дважды развернуть одно и то же веб-приложение на WebLogic 11g? - PullRequest
4 голосов
/ 22 марта 2012

Мы разработали веб-приложение JEE5 (WAR) и запускаем его в производство под управлением WebLogic 11g (10.3.5).

Теперь одно и то же приложение должно быть развернуто как отдельные приложения для разных клиентов (разные URL-адреса, разные данные) в одной и той же WebLogic.

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

Но мне еще предстоит заставить их использовать разные источники данных - и, поскольку я хочу избежать сборок, специфичных для клиента, файл persistence.xml одинаков для всех приложений, поэтому также и имя модуля персистентности.

Какая установка лучше всего подходит для этого сценария? Я вынужден делать отдельные сборки и с помощью этих разных WAR-ов или мне нужно разделять управляемые серверы или домены с сервера или есть лучший способ решить это?

Ответы [ 3 ]

0 голосов
/ 26 марта 2012

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

По этой причине я решил приступить к созданию отдельных файлов WAR (которых я изначально старался избегать), чтобы включить специфичные для клиента файлы persistence.xml и указать специфичные для клиента источники данных в WLS.

0 голосов
/ 16 ноября 2015

Я знаю, что эта ветка очень старая, но отвечает так, что она может помочь кому-то с тем же вопросом, спотыкающимся в этой ветке.

Последняя версия weblogic 12.2.1 поставляется с Multi-tenancy (дополнение Iугадайте), что может позволить вам запускать одни и те же приложения в одном домене.

Редактировать: В Weblogic 12.2.1 введена концепция, называемая разделами.Разделы являются как конфигом, так и динамическим подразделением домена weblogic.В одном домене weblogic вы можете создать несколько разделов.Каждый раздел будет иметь одну или несколько групп ресурсов.Группы ресурсов - это логическая группировка ресурсов weblogic, таких как источники данных, jms, приложения Java EE и т. Д.Например, чтобы добиться того, о чем просили оригинальные публикации, мы создаем шаблон группы ресурсов с веб-приложением и источником данных в качестве ресурсов.В конфигурации источника данных мы можем предоставить переменную-заполнитель вместо фактического URL-адреса в качестве URL-адреса БД.Затем мы можем создать два раздела, которые ссылаются на этот шаблон группы ресурсов (теперь у каждого раздела будет отдельное веб-приложение и источник данных).Каждый раздел будет переопределять там свойство URL-адреса БД, создавая два источника данных с одинаковым именем JNDI. В каждом разделе мы создаем виртуальный хост / порт, чтобы клиент мог использовать его для доступа к приложению, запущенному в соответствующих разделах.

Более подробную и подробную информацию об этом можно найти в https://blogs.oracle.com/WebLogicServer/entry/domain_partitions_for_multi_tenancy

0 голосов
/ 22 марта 2012

ServletContextListener.contextInitialized может посмотреть ServletContext и выяснить, какое развертывание

в web.xml, определить прослушиватель контекста сервлета:

<listener>
  <listener-class>com.path.YourServletContextListener</listener-class>
</listener>

, а затем в YourServletContextListener.java, добавьте contextInitialized метод, подобный следующему:

public void contextInitialized(ServletContextEvent sce)
{
  ServletContext sc = sce.getServletContext();
  String name = sc.getContextPath();
  ...
}

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

...