如何在WebLogic 11g上两次部署相同的Web应用程序?

我们开发了一个JEE5 Web应用程序(WAR),并在WebLogic 11g(10.3.5)下运行它.

现在,应将同一应用程序部署为同一WebLogic上不同客户(不同URL,不同数据)的单独应用程序.

我通过在部署之后为每个部分设置不同的上下文根来管理第一部分.

但我还没有让他们使用不同的数据源 – 因为我想避免客户特定的构建,所以persistence.xml对于所有应用程序都是相同的,因此也是持久性单元名称.

这种情况的最佳设置是什么?我是否强制进行单独的构建以及不同的WAR,或者我必须将服务器或域与服务器分开,还是有更好的方法解决它?

解决方法

ServletContextListener.contextInitialized可以查看ServletContext并找出哪个部署

在web.xml中,定义一个servlet上下文侦听器:

<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();
  ...
}

我的想法是你可以使用该名称从已配置的多个数据源中进行选择.根据您的部署方式,您将建立不同的数据库连接并拥有正确的应用程序数据.

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在&#39;&#39;,则表示换行,用&#39;&#39;切割。
代码实现 option = { backgroundColor: &amp;#39;#080b30&amp;#39;, tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...