在 context.xml 中配置 jdbcRealm
Posted
技术标签:
【中文标题】在 context.xml 中配置 jdbcRealm【英文标题】:Configuring jdbcRealm in context.xml 【发布时间】:2012-02-22 21:45:32 【问题描述】:<Context antiJARLocking="true" path="/NCellLive">
<Resource
name="jdbc/Gis_WebApp"
auth="Container"
type="javax.sql.DataSource"
username="uname"
password="pword"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Gis_WebApp;SelectMethod=cursor;"
maxActive="8"
/>
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Gis_WebApp;"
connectionName="uname" connectionPassword="pword"
userTable="app_user" userNameCol="username" userCredCol="password"
userRoleTable="app_user_group" roleNameCol="groupname"/>
</Context>
现在所有数据库连接都工作正常,但是在我添加领域后抛出错误后,我已经在库中添加了 sqljdbc4.jar。
Jan 31, 2012 11:28:24 AM org.apache.catalina.realm.JDBCRealm authenticate
SEVERE: Exception performing authentication
java.sql.SQLException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:701)
at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:352)
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:295)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:450)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1805)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
可能是什么问题?
【问题讨论】:
【参考方案1】:Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
告诉你在你的类路径中找不到 sql 库。 它需要在您的 tomcat/lib 文件夹中。
来自doc:
要设置 Tomcat 以使用 JDBCRealm,您需要遵循这些 步骤:
如果您尚未这样做,请在数据库中创建符合上述要求的表和列。 配置供 Tomcat 使用的数据库用户名和密码,至少对上述表具有只读访问权限。 (Tomcat 永远不会尝试写入这些表。) 将您将使用的 JDBC 驱动程序的副本放在 $CATALINA_HOME/lib 目录中。请注意,仅识别 JAR 文件! 在 $CATALINA_BASE/conf/server.xml 文件中设置一个元素,如下所述。 如果 Tomcat 6 已经在运行,请重新启动它。
【讨论】:
以上是关于在 context.xml 中配置 jdbcRealm的主要内容,如果未能解决你的问题,请参考以下文章
在tomcat下context.xml中配置各种数据库连接池
在application-context.xml中配置多个property-placeholder