Java 从WEB-INF/lib而不是tomcat/lib加载JDBCRealm驱动程序jar

Java 从WEB-INF/lib而不是tomcat/lib加载JDBCRealm驱动程序jar,java,tomcat,jar,jdbcrealm,Java,Tomcat,Jar,Jdbcrealm,我在这里遇到了类似的问题: 示例配置-我的领域嵌套在上下文中,因为我希望它特定于web应用程序 <Context> <Realm className="org.apache.catalina.realm.JDBCRealm" debug="9" connectionName="username" connectionPassword="password" connectionURL="url"

我在这里遇到了类似的问题:

示例配置-我的领域嵌套在上下文中,因为我希望它特定于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安装进行更改。罐子在那里,但验证器似乎找不到它


谢谢

经过修补,我找到了一个解决办法。数据库是资源化的,领域引用该资源,而不是指定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>


谢谢

除了不想更改tomcat的安装之外,还有什么紧急的理由不将jar放入
tomcat/lib
?通常您确实不想在其中抛出任何jar,但对于JDBC驱动程序来说,这是一种常见的做法,甚至建议您这样做:我们希望能够在不必配置tomcat的情况下部署应用程序。这使得我们的开发人员更容易在本地机器上进行QA。我们也不希望每次有更新时都更换每个tomcat上的驱动程序jar。