2012-12-13 20 views
7

Ciężko pracuję nad tym, jak powinienem zainstalować sterownik JDBC dla PostgreSQL na serwerze debian 6.0. I zostały przeniesione do sterownika .jar w następującym katalogu:PostgreSQL - Instalowanie sterownika JDBC

/usr/local/pgsql/share/java/postgresql.jar. 

Następnie samouczki mówić o użyciu tego kodu:

Class.forName("org.postgresql.Driver"); 

Jednakże, ponieważ jestem nowy do PostgreSQL nie mam pojęcia, gdzie powinienem umieszczać tę linię, lub jeśli jest to nawet poprawne.

Moje pytanie brzmi: nie przesuwasz pliku jar do tej lokalizacji, co właściwie muszę zrobić, aby zainstalować sterownik JDBC w mojej instalacji postgreSQL?


EDIT: To jest moja konfiguracja:

Serwer 1: Tomcat + SOLR

Server 2: PostgreSQL ze sterownika JDBC

SOLR na serwer 1 zapytaniami PostgreSQL na serwerze 2 za pośrednictwem sterownika JDBC

+1

Sterowniki implementujące specyfikację JDBC 4.0 nie wymagają ręcznego ładowania klasy sterownika ('Class.forName (...)'). Jeśli tak jest w twoim przypadku, powinno wystarczyć umieszczenie sterownika na ścieżce klasowej, tak jak zasugerował @Tomas w swojej odpowiedzi. –

+0

Co się stanie, jeśli moja aplikacja, w tym przypadku SOLR, znajduje się na innym serwerze niż postgreSQL? Czy powinienem umieszczać tę ścieżkę klasy na serwerze Solr? –

+0

Czy moja aplikacja jest zamiast Postgresql? –

Odpowiedz

5

Najlepiej zainstalować sterownik PostgreSQL w folderze tomcat \ lib. Po prostu skopiuj słoik sterownika do PATH_TO_TOMCAT \ lib

Nie jest dobrym pomysłem dodawanie elementów do systemu CLASSPATH, ponieważ możesz zakończyć w piekle ładowania klasowego. Oto przykład, jak trafisz do piekła jar/classpath.

  • Załóżmy obecny aplikacja używa PostgreSQL 9.1, a kierowca na CLASSPATH systemu
  • zdecydujesz się uruchomić inną aplikację na tym polu który mówi do nowszej wersji PostgreSQL masz setup powiedzmy wersji 9.2
  • Bo używasz systemu classpath, aplikacja 2 zakończy działanie ze starego sterownika, ponieważ ścieżka klas SYSTEM ma pierwszeństwo przed ścieżką klasy aplikacji, chyba że skrypt uruchamiania aplikacji ustawia CLASSPATH = "", aby opróżnić systemową ścieżkę klas lub używa niestandardowego programu ładującego klasy, który nie ładuje się w pierwszej kolejności.

Zobacz http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

3

Ten sterownik musi znajdować się w ścieżce klas. Możesz użyć tego polecenia, aby skopiować bibliotekę do struktury projektu. Możesz też użyć tej komendy.

Następnie można tworzyć połączenia jako samouczki powiedzieć ...

+0

Dziękuję za odpowiedź. Tego jednak nie dostaję. Moja "aplikacja" to SOLR działający na innym serwerze. Co powinienem używać jako mojej aplikacji w twoim przykładzie? –

+1

@JamesWillson: Jeśli SOLR jest twoją "aplikacją", powinieneś edytować swoje pytanie i wyjaśnić swoją konfigurację. Uruchamianie osadzone w innym frameworku/kontenerze/serwerze wymaga zupełnie innej konfiguracji niż uruchomienie małej, autonomicznej aplikacji. –

+0

@JamesWillson Jeśli używa Jetty, umieść ten sterownik w folderze lib Jetty ... – user219882

1

w Twoim IDE (Eclipse, idea, etc) trzeba dodać tę ścieżkę jako biblioteka.

Można również skompilować i wykonać z wiersza polecenia, jeśli zdefiniujesz zmienną CLASSPATH, która zawiera tę.

export CLASSPATH=/usr/local/pgsql/share/java/postgresql.jar 
javac -classpath $CLASSPATH MyDBApp.java 
java -cp $CLASSPATH MyDBApp 
1

zainstalować wszystkie pakiety:

# apt-get install libpostgresql-jdbc-java libpostgresql-jdbc-java-doc 

Aby ustawić środowiska Java dla wszystkich użytkowników, dodawać/edytować/etc/environment:

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" 
CLASSPATH=".:/usr/share/java/mysql.jar:/usr/share/java/postgresql-jdbc4.jar" 

Uwaga: zmień/usr/lib/jvm/java-8-openjdk-amd64 swoim JDK

Uwaga: jeśli wolałem użyć PostgreSQL jdbc3 wymienić /usr/share/java/postgresql-jdbc4.jar z /usr/share/java/postgresql.jar

Przetestuj połączenie za pomocą tego kodu :

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()); 

     } 

    } 

} 

Uwaga: baza zmiana, łatwy i passwrod z konfiguracją

http://www.garasiku.web.id/web/joomla/index.php/java/112-debian-jessie-installing-openjdk-8-mysql-jdbc-and-postgresql-jdbc

Powiązane problemy