2015-12-15 74 views
2

我正在使用最近继承的tomcat 7 webapp。我们正在从Tomcat 5.5迁移。Tomcat没有执行正确的域

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 /卡塔利娜/本地主机/ *****。XML

我试图从头开始用简单的领域,或RealmBase的扩展开始,他们都做同样的事情。

感谢, 特拉维斯

+0

当您在您的context.xml文件而不是server.xml中定义时,会发生什么情况?就像没有定义领域一样吗? –

+0

当我在上下文中定义域时(与server.xml相比),我没有看到任何东西从我的领域记录下来。但它确实表明它正在RealmBase中调用函数。我继承的领域确实扩展了RealmBase。所以它看起来像只调用基本代码,而不是我的扩展。 – marbletravis

+0

您的域实现名为“com. ******。tomcat.auth.LdapSqlRealm”。包含这个类的库在哪里?在你的服务器中是否有其他类具有相同名称+包? –

回答

1

原来,我在server.xml中这是搞乱了我的context.xml文件有一个额外的<Context />标签在我<Host />标签。

小Santi给我提供了一个tomcat的vanilla构建,我并没有最终做这件事,但我做了两个server.xml的比较,马上发现了这个问题。希望我早点想到它。

+0

对你有好处!恭喜。 –