- ベストアンサー
TomcatとPostgreSqlの接続について
Tomcat4.0.4とApache1.3.26を使用しDBはPostgreSQLをつかっているのですが、DB接続がうまくいきません。 接続の際の記述は以下の通りです public void init(ServletConfig conf) throws ServletException { try{ Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://localhost:8080:5432/test"; String user = "nakayama"; String pwd = "noah"; con = DriverManager.getConnection(url,user,pwd); }catch(Exception e){ err = err + "DataBase Connection err = " +e+"<br>"; } } これで実行すると、以下のエラーが出ます。 DataBase Connection err = Something unusual has occured to cause the driver to fail. Please report this exception: Exception: java.lang.NullPointerException Stack Trace: java.lang.NullPointerException at org.postgresql.Connection.openConnection(Connection.java:155) at org.postgresql.Driver.connect(Driver.java:149) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at toroku2.init(toroku2.java:24) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:918) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:655) at ・・・・・ どうすれば解決できるのでしょうか? 教えてくださいm(__)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
エラー内容↓ DataBase Connection err = Connection refused. Check that the hostname and port is correct, and that the postmaster is running with the -i flag, which enables TCP/IP networking. postmasterの起動に-iのオプションが入っていないのではないかと思います。確認してみて下さい。 export CLASSPATH=.:postgresql.jar のようにドライバへのCLASSPATHの設定は必要です。 もしドライバが見つからない場合はClassNotFoundExceptionを返します。 JDBCはいろんなことに気をつける必要があるためうっかりミスが起きやすいので落ち着いてエラー内容を見るか例外処理をうまく使うと対処しやすいです。
その他の回答 (3)
- covachan
- ベストアンサー率38% (46/120)
Windows版での環境を使用したことはないのでわからないのですが、 このエラーはTCPでの通信ができないというエラーです。 ですので、JAVAは関係ないと思います。 おそらく、postgres.confの中のtcpip_socket項目がコメントアウトされているか、falseのままなんだと思われます。 PostgreSQLはデフォルトではTCPポートをふさいでいます。 一度確認してください。
お礼
返事が遅くなりましたが、 ありがとうございます。 起動時にコマンドプロンプトからオプション「-i」を指定して起動すれば接続できるようになしました。 m(__)m
- jakarta
- ベストアンサー率38% (607/1597)
8080はTOMCAT初期設定のHTTPのためのポート番号ですのでドライバのコネクションとは関係ないですね。 5432はPostgresqlの初期設定ポート番号ですのでシンプルに"jdbc:postgresql:test"でよいかと思います。 URLの書式は以下の通りです。 jdbc:postgresql:database jdbc:postgresql://host/database jdbc:postgresql://host:port/database (conがいきなりでてきているので気になりましたが先にConnectionとして用意されているとみなしました)
お礼
上記のように設定したんですが、以下のエラーになってしまいます。 Driverは pg72jdbc2.jar の org.postgresql.Driver を指定しているのですが・・・ CLASSPATHの設定とかも必要なのでしょうか? エラー内容↓ DataBase Connection err = Connection refused. Check that the hostname and port is correct, and that the postmaster is running with the -i flag, which enables TCP/IP networking.
- ssj
- ベストアンサー率73% (11/15)
PostgreSQLは使ったことがないので外しているかも しれませんが。。。 String url = "jdbc:postgresql://localhost:8080:5432/test"; 上記のJDBCドライバURLで、8080というのはいらないのでは? String url = "jdbc:postgresql://localhost:5432/test";
お礼
やっっぱりそうですが、JDBCの指定方法では //サーバ名:ポート番号:jdbcポート番号/DB名 となっていたので、無理やり指定してみたんですが 上記ではむりでした・・・・
お礼
ありがとうございます。 -i での起動ということは、起動の仕方が悪いという事ですね。 現在の環境がWindowsXPである為、起動する時は、EXEから挙げています。 DOS窓から起動しないといけないという事でしょうか? ちなみに、PostgreSQLはWindows版を使用しています。