我正在开发我最近继承的 tomcat 7 webapp。我们正在努力从 Tomcat 5.5 迁移。
Web 应用程序使用 tomcat 领域来处理 ldap/sql 身份验证的组合。
当我如下定义我的 context.xml 时
<Context docBase="*******" reloadable="false">
<Realm className="com.******.tomcat.auth.LdapSqlRealm"
****
/>
<Resource name="jdbc/*****"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
testWhileIdle="true"
testOnBorrow="true"
testOnReturn="false"
validationQuery="SELECT 1"
validationInterval="30000"
timeBetweenEvictionRunsMillis="60000"
maxActive="15"
maxIdle="15"
maxWait="30000"
initialSize="10"
removeAbandonedTimeout="60"
removeAbandoned="true"
logAbandoned="true"
minEvictableIdleTimeMillis="60000"
numTestsPerEvictionRun="2"
jmxEnabled="true"
jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;
org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
username="*****"
password="*****"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="*****"
/></Context>
我可以在日志中看到我的领域正在初始化,但是当我进行身份验证(使用基本)时,它并没有使用我的领域。
如果我在 server.xml 文件中定义领域,它就可以正常工作。
关于为什么我不能在 context.xml 中定义它的任何想法。
我们的context.xml文件其实位于cont/Catalina/localhost/*****.xml
我曾尝试从头开始使用简单的领域或 RealmBase 的扩展,它们都做同样的事情。
谢谢, 特拉维斯
最佳答案
原来我多了一个<Context />
在我的标签 <Host />
我的 server.xml 中的标记弄乱了我的 context.xml 文件。
Little Santi 向我推荐了 tomcat 的 vanilla 构建,我最终没有这样做,但我对两者的 server.xml 进行了比较,并立即发现了问题。真希望我早点想到它。
关于java - Tomcat 没有执行正确的领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34295829/