2015-11-05 34 views
0

我有一個類似的問題在這裏: Configuring jdbcRealm in context.xml加載JDBCRealm驅動jar

配置示例 - 我的境界嵌套的背景下,因爲我希望它是具體的到Web應用程序。

<Context> 
    <Realm className="org.apache.catalina.realm.JDBCRealm" debug="9" 
      connectionName="username" 
      connectionPassword="password" 
      connectionURL="url" 
      driverName="com.ibm.db2.jcc.DB2Driver" 
      roleNameCol="PERMISSION" 
      userCredCol="PASSWORD" 
      userNameCol="USERID" 
      userRoleTable="ROLESTABLE" 
      userTable="USERSTABLE"/> 
</Context> 

解決方法是將驅動程序jar放到tomcat/lib文件夾中。如果我將db2驅動程序jar放在該文件夾中,它就可以工作。

但是,我想從應用程序/ WEB-INF/lib中加載jar,以便我不必更改Tomcat安裝。罐子在那裏,但驗證者似乎無法找到它。

謝謝!

+0

除了不想更改Tomcat安裝之外,是否有迫切的理由不把它放在'tomcat/lib'中?通常的確你不想在這裏拋出任何jar,但對於JDBC驅動程序來說這是常見的做法,甚至建議這樣做:http://stackoverflow.com/questions/6981564/why-must-the-jdbc-driver- be-put-in-tomcat-home-lib-folder – acdhirr

+0

我們希望能夠部署我們的應用程序,而無需配置tomcat。這使我們的開發人員能夠更輕鬆地在其本地計算機上進行QA。每次更新時,我們也不希望在每個tomcat上更換驅動程序jar。 – Alex

回答

0

經過修補後,我找到了一個解決方案。數據庫資源和領域引用該資源,而不是指定JDBCRealm本身。以下context.xml位於Web應用程序的META-INF文件夾中。

<Context> 
    <Resource name="jdbc/DBNAME" 
      auth="Container" 
      type="javax.sql.DataSource" 
      factory="org.apache.commons.dbcp.BasicDataSourceFactory" 
      maxActive="25" 
      maxWait="30000" 
      username="USERNAME" 
      password="PASSWORD" 
      driverClassName="DRIVER" 
      url="URL" 
      removeAbandoned="true" 
      logAbandoned="true" 
      validationQuery="select * from test" 
      testOnBorrow="true" 
      testWhileIdle="true" 
      timeBetweenEvictionRunsMillis="1800000" 
     /> 
    <Realm className="org.apache.catalina.realm.DataSourceRealm" 
     dataSourceName="jdbc/DBNAME" 
     localDataSource="true" 
     roleNameCol="PERMISSION" 
     userCredCol="PASSWORD" 
     userNameCol="USERID" 
     userRoleTable="ROLESTABLE" 
     userTable="USERSTABLE"/> 
</Context> 

謝謝!