2015-12-15 125 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

對你有好處!恭喜。 –