Позорное java.sql.SQLException: не найдено подходящего драйвера
blockquote>Это исключение может иметь в основном две причины:
1. Драйвер JDBC не загружен
Вам необходимо убедиться, что драйвер JDBC помещен в собственную папку
/lib
сервера.[/g15]
Или, если на самом деле вы не используете источник данных пула соединений, управляемый сервером, а вручную запускаете
DriverManager#getConnection()
в WAR , тогда вам нужно поместить драйвер JDBC в WAR/WEB-INF/lib
и выполнить ..Class.forName("com.example.jdbc.Driver");
.. в вашем коде перед первый
DriverManager#getConnection()
вызов, посредством которого вы делаете убедитесь, что вы не проглатываете / игнорируете любыеClassNotFoundException
, которые могут быть выброшены им, и продолжайте поток кода, как будто ничего исключительного не произошло. См. Также Где я должен разместить драйвер JDBC для пула соединений Tomcat?2. Или URL-адрес JDBC находится в неправильном синтаксисе
Вам нужно убедиться, что URL JDBC соответствует документации драйвера JDBC и помните, что он обычно чувствителен к регистру. Когда URL-адрес JDBC не возвращает
true
дляDriver#acceptsURL()
для любого из загруженных драйверов, тогда вы также получите именно это исключение.В случае PostgreSQL это документально здесь .
С JDBC база данных представлена URL-адресом (Uniform Resource Locator). С PostgreSQL ™ это принимает одну из следующих форм:
blockquote>
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
В случае с MySQL это здесь .
Общий формат URL-адреса JDBC для подключения к серверу MySQL следующим образом: элементы в квадратных скобках (
[ ]
) являются необязательными:blockquote>
jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
В случае Oracle это документировано здесь .
Существует 2 синтаксиса URL, старый синтаксис, который будет работать только с SID и новый с именем службы Oracle.
Старый синтаксис
jdbc:oracle:thin:@[HOST][:PORT]:SID
Новый синтаксис
blockquote>jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
См. также:
- Где я должен разместить драйвер JDBC для Пул соединений Tomcat
- Как установить драйвер JDBC в веб-проект Eclipse без обращения к java.lang.ClassNotFoundexception
- Как следует Я подключаюсь к базе данных JDBC / источнику данных в приложении на основе сервлета?
- В чем разница между "Class.forName ()" и "Class.forName (). newInstance ()"?
- Подключить Java к базе данных MySQL
Решение SSO, что я реализовал здесь работы следующим образом:
Примечания:
Не перестраивайте колесо. Существует много междоменных пакетов SSO с открытым исходным кодом, таких как JOSSO, OpenSSO, CAS, Шибболет и другие. При использовании Microsoft Technology повсюду (IIS, AD), можно использовать федерацию Microsoft (ADFS) вместо этого.
Насколько отличающийся имена хоста?
Эти хосты могут совместно использовать cookie:
, Но они не могут:
В бывшем случае можно строчить основанное на cookie решение. Думайте GUID и таблица сессии базы данных.
При использовании Active Directory, у Вас мог бы быть каждый AD использования приложения для аутентификации, вход в систему мог бы тогда быть бесшовным.
Иначе, если приложения могут говорить друг с другом негласно, Вы могли бы использовать sessionids и иметь одно приложение, обрабатывающее идентификационное поколение, вручающее все Ваши другие приложения.