Java 从WEB-INF/lib而不是tomcat/lib加载JDBCRealm驱动程序jar
我在这里遇到了类似的问题: 示例配置-我的领域嵌套在上下文中,因为我希望它特定于web应用程序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"
<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。