PostgreSQL-Установка драйвера JDBC
мне трудно понять, как я должен устанавливать драйвер JDBC для PostgreSQL на моем сервере debian 6.0. Я перевез водителя .jar в следующий каталог:
/usr/local/pgsql/share/java/postgresql.jar.
тогда учебники говорят об использовании этого кода:
Class.forName("org.postgresql.Driver");
однако, поскольку я новичок в postgreSQL, я понятия не имею, где я должен ставить эту строку, или если это даже правильно.
мой вопрос, за исключением перемещения файла jar в это место, что мне делать на самом деле нужно сделать, чтобы установить драйвер JDBC на мою установку postgreSQL?
EDIT: это моя настройка:
сервер 1: Tomcat + SOLR
сервер 2: PostgreSQL с драйвером JDBC
SOLR на сервере 1 запрашивает postgreSQL на сервере 2 через драйвер JDBC
4 ответов
лучше всего установить драйвер PostgreSQL в папку tomcat\lib. Просто скопируйте jar драйвера в PATH_TO_TOMCAT\lib
Не рекомендуется добавлять вещи в системный путь к классам, потому что вы можете закончить в классе loader hell. Вот пример того, как вы оказываетесь в аду jar / classpath.
- предположим, что текущее приложение использует postgres 9.1, и вы устанавливаете драйвер на системном пути к классам
- вы решили запустить другое приложение на этом поле, который говорит с новая версия Постгреса, допустим, версия 9.2
- поскольку вы используете приложение system classpath 2 в конечном итоге будет использовать старый драйвер, потому что системный classpath имеет тенденцию иметь приоритет над classpath приложений, если сценарий запуска приложения не устанавливает CLASSPATH="", чтобы очистить системный classpath или использует пользовательский загрузчик классов, который не выполняет загрузку родительского первого класса.
посмотреть http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html
этот драйвер должен быть на вашем пути к классам. Вы можете использовать эту команду
java -cp /usr/local/pgsql/share/java/postgresql.jar my.app.MainClass
или вы можете скопировать библиотеку в структуру проекта.
затем вы можете создавать соединения, как говорят учебники...
в вашей IDE (Idea, Eclipse и т. д.) Вам нужно добавить этот путь в качестве библиотеки.
кроме того, вы можете компилировать и выполнять из командной строки, Если вы определяете переменную CLASSPATH, которая включает это.
export CLASSPATH=/usr/local/pgsql/share/java/postgresql.jar
javac -classpath $CLASSPATH MyDBApp.java
java -cp $CLASSPATH MyDBApp
установить все пакеты:
# apt-get install libpostgresql-jdbc-java libpostgresql-jdbc-java-doc
чтобы установить среду Java для всех пользователей, добавьте / отредактируйте/etc / environment:
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
CLASSPATH=".:/usr/share/java/mysql.jar:/usr/share/java/postgresql-jdbc4.jar"
Примечание: изменить /usr/lib/jvm / java-8-openjdk-amd64 с помощью JDK
Примечание: если вы предпочитаете использовать postgresql-jdbc3, замените /usr/share/java/postgresql-jdbc4.jar с /usr / share / java / postgresql.Джар
проверьте соединение с помощью этого кода:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
class TestDB {
/*
/usr/share/java
http://dev.mysql.com/doc/connector-j/5.1/en/
https://jdbc.postgresql.org/documentation/documentation.html
*/
static Connection conn = null;
public static void main(String[] args) {
// PostgreSQL
try {
System.out.println("Loading Class org.postgresql.Driver");
Class.forName("org.postgresql.Driver");
System.out.println("Loading org.postgresql.Driver Successful");
String url = "jdbc:postgresql://localhost/database";
Properties props = new Properties();
props.setProperty("user","user");
props.setProperty("password","password");
props.setProperty("ssl","true");
conn = DriverManager.getConnection(url, props);
// or
url = "jdbc:postgresql://localhost/database?user=user&password=password&ssl=true";
Connection conn = DriverManager.getConnection(url);
// Do something with the Connection
System.out.println("Test Connection Successful");
} catch (SQLException ex) {
// handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} catch (ClassNotFoundException ex) {
System.out.println("Class Not Found: " + ex.getMessage());
}
}
}
Примечание: изменение базы данных, пользователя и passwrod с вашей конфигурацией