<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>

Now all data base connection is working fine but after I added realm following errors are thrown I already have sqljdbc4.jar added in library.

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

What might be the problem?

有帮助吗?

解决方案

Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

tells you that the sql library cannot be found in your classpath.
It needs to be in your tomcat/lib folder.

From the doc:

To set up Tomcat to use JDBCRealm, you will need to follow these steps:

  1. If you have not yet done so, create tables and columns in your database that conform to the requirements described above.
  2. Configure a database username and password for use by Tomcat, that has at least read only access to the tables described above. (Tomcat will never attempt to write to these tables.)
  3. Place a copy of the JDBC driver you will be using inside the $CATALINA_HOME/lib directory. Note that only JAR files are recognized!
  4. Set up a element, as described below, in your $CATALINA_BASE/conf/server.xml file.
  5. Restart Tomcat 6 if it is already running.
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top