Настройка jdbcRealm в context.xml - PullRequest
4 голосов
/ 31 января 2012
<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 Ответ

3 голосов
/ 31 января 2012
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

сообщает, что библиотека sql не найдена в вашем пути к классам.
Он должен быть в вашей папке tomcat / lib.

Из документа :

Чтобы настроить Tomcat на использование JDBCRealm, вам необходимо выполнить следующие действия. шаги:

  1. Если вы еще этого не сделали, создайте таблицы и столбцы в вашей базе данных, которые соответствуют требованиям, описанным выше.
  2. Настройте имя пользователя и пароль базы данных для использования Tomcat, который имеет по крайней мере доступ только для чтения к описанным выше таблицам. (Tomcat никогда не будет пытаться писать в эти таблицы.)
  3. Поместите копию драйвера JDBC, которую вы будете использовать, в каталог $ CATALINA_HOME / lib. Обратите внимание, что распознаются только файлы JAR!
  4. Установите элемент, как описано ниже, в вашем файле $ CATALINA_BASE / conf / server.xml.
  5. Перезапустите Tomcat 6, если он уже запущен.
...