Java 要让多个Tomcat实例使用单独的context.xml文件,我必须更改什么配置?
我在同一台Windows机器上设置了两个运行在不同端口上的tomcat实例。一个是阿尔法,另一个是发展。我已经在每台服务器上部署了Alpha和Dev-wars(相同的应用程序名称,在META-INF/context.xml中有不同的设置) Tomcat目录的内容完全相同,除了:Java 要让多个Tomcat实例使用单独的context.xml文件,我必须更改什么配置?,java,tomcat,tomcat6,Java,Tomcat,Tomcat6,我在同一台Windows机器上设置了两个运行在不同端口上的tomcat实例。一个是阿尔法,另一个是发展。我已经在每台服务器上部署了Alpha和Dev-wars(相同的应用程序名称,在META-INF/context.xml中有不同的设置) Tomcat目录的内容完全相同,除了: 部署的war不同(我启动了新的、已删除的webapps/*war文件和目录) conf/server.xml文件不同(设置不同的端口) bin/catalina.bat文件不同(将catalina_HOME更改为每个实
- 部署的war不同(我启动了新的、已删除的webapps/*war文件和目录)
- conf/server.xml文件不同(设置不同的端口)
- bin/catalina.bat文件不同(将catalina_HOME更改为每个实例的完整路径)
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/hng"
auth="Container"
driverClassName="com.mysql.jdbc.Driver"
type="javax.sql.DataSource"
maxActive="60"
minIdle="5"
maxIdle="60"
maxWait="10000"
testOnBorrow="true"
testOnReturn="true"
testWhileIdle="true"
validationQuery="SELECT 1"
timeBetweenEvictionRunsMillis="20000"
minEvictableIdleTimeMillis="300000"
removeAbandoned="true"
removeAbandonedTimeout="180"
logAbandoned="true"
username="root"
password="<removed>"
url="jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&autoReconnectForPools=true" />
</Context>
这些文件仅在数据库名称上有所不同。如果您100%确定上下文内容是正确的,那么dev是“hngdev”,alpha是“hngalpha”(而不是dbname) 然后我会说检查数据库服务器中的设置 可能是您在数据库服务器中创建了错误的用户?为alpha用户和dev用户提供相同的权限。也许你复制粘贴了两个相同的授权用户查询
您还可以尝试将alpha上下文中的db信息更改为错误的用户信息/端口。它还连通吗 问题在于,我在$CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml中有一个context.xml文件,该文件与开发环境的相同 由于我的server.xml配置,在复制整个tomcat目录结构以创建alpha tomcat环境之前,上下文描述符曾被复制到那里。由于我的server.xml配置,它没有在新部署的应用程序上更新。数据源信息是从$CATALINA_BASE/conf/[engineame]/[hostname]/[webappname].xml读取的,这是我不知道或不希望看到的 以下是上下文和部署如何在不同服务器配置上工作的详细说明:
使用什么数据库服务器?mysql?想与我们共享您的上下文文件吗?这里有config.xml文件。我100%确定这只是db的差异,我在winmerge中检查了差异,以防我的眼睛在捉弄我。等等!当我执行像DataSource ds=(DataSource)(new InitialContext())这样的查找时。。。我查找的资源是否跨多个流程共享?它是否有可能不尝试从my context.xml构建连接池,因为有一个具有该路径的资源已经存在于另一个java进程中?是的,我实际上不需要检查数据库,因为我在两个tomcat实例中远程调试了应用程序并检查了数据源,它们都显示了相同的连接url:jdbc:mysql://127.0.0.1:3306/hngalpha?useUnicode=true&characterEncoding=UTF-8&;自动重新连接=正确&;autoReconnectForPools=True是的,你是对的,我对dev和alpha使用同一个用户,并且它被授予了对两个dbs的访问权(这是一个糟糕的做法),但问题仍然是,对于这两个实例,envCtx.lookup(“jdbc/hng”)返回一个指向dev数据库(hngdev)的数据源,尽管alpha的context.xml文件指定hngalpha作为db连接URL中的数据库,但我确实检查了您所说的,我设置了错误的用户名和密码,并且数据库名称不存在。它仍然成功地连接到dev。所以我有点确定alpha的context.xml永远不会被读取,也许整个webapp内容永远不会被使用。奇怪的是,当我启动alpha实例时,它确实扩展/部署了war