Tomcat没有执行正确的领域

时间:2015-12-15 17:37:09

标签: java xml tomcat context.xml

我正在处理我最近继承的tomcat 7 webapp。我们正在从Tomcat 5.5迁移。

webapp使用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的扩展,他们都做同样的事情。

谢谢, 特拉维斯

1 个答案:

答案 0 :(得分:1)

事实证明我的server.xml中的<Context />标记中有一个额外的<Host />标记,它正在弄乱我的context.xml文件。

Little Santi通过建议一个tomcat的vanilla构建让我失望,我最终没做到这一点,但我做了两个server.xml的比较并立即发现了问题。希望我早点想到它。