• ベストアンサー

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

  • Java
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.3

エラー内容↓ 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はいろんなことに気をつける必要があるためうっかりミスが起きやすいので落ち着いてエラー内容を見るか例外処理をうまく使うと対処しやすいです。

tomsoya
質問者

お礼

ありがとうございます。 -i での起動ということは、起動の仕方が悪いという事ですね。 現在の環境がWindowsXPである為、起動する時は、EXEから挙げています。 DOS窓から起動しないといけないという事でしょうか? ちなみに、PostgreSQLはWindows版を使用しています。

その他の回答 (3)

  • covachan
  • ベストアンサー率38% (46/120)
回答No.4

Windows版での環境を使用したことはないのでわからないのですが、 このエラーはTCPでの通信ができないというエラーです。 ですので、JAVAは関係ないと思います。 おそらく、postgres.confの中のtcpip_socket項目がコメントアウトされているか、falseのままなんだと思われます。 PostgreSQLはデフォルトではTCPポートをふさいでいます。 一度確認してください。

tomsoya
質問者

お礼

返事が遅くなりましたが、 ありがとうございます。 起動時にコマンドプロンプトからオプション「-i」を指定して起動すれば接続できるようになしました。 m(__)m

  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.2

8080はTOMCAT初期設定のHTTPのためのポート番号ですのでドライバのコネクションとは関係ないですね。 5432はPostgresqlの初期設定ポート番号ですのでシンプルに"jdbc:postgresql:test"でよいかと思います。 URLの書式は以下の通りです。 jdbc:postgresql:database jdbc:postgresql://host/database jdbc:postgresql://host:port/database (conがいきなりでてきているので気になりましたが先にConnectionとして用意されているとみなしました)

参考URL:
http://jdbc.postgresql.org/doc.html
tomsoya
質問者

お礼

上記のように設定したんですが、以下のエラーになってしまいます。 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)
回答No.1

PostgreSQLは使ったことがないので外しているかも しれませんが。。。 String url = "jdbc:postgresql://localhost:8080:5432/test"; 上記のJDBCドライバURLで、8080というのはいらないのでは? String url = "jdbc:postgresql://localhost:5432/test";

tomsoya
質問者

お礼

やっっぱりそうですが、JDBCの指定方法では //サーバ名:ポート番号:jdbcポート番号/DB名 となっていたので、無理やり指定してみたんですが 上記ではむりでした・・・・

関連するQ&A

  • MySQLへの接続なんですが・・。

    下記にあるJAVAのソースファイルがあるのですが、コンパイルしてクラスファイルをつくり、実行してもうまくいきません。 windows2000Professional, j2sdk1.4.0_01, MySQL3.23.47 // uc/BaseJdbc.java import java.sql.* ; public class BaseJdbc { public static void main(String[] args) { final String LINE = "---------------------------------------\n" ; try { Class.forName("org.gjt.mm.mysql.Driver") ; // JDBCドライバ登録 System.out.println("\n" + LINE + "MySQLのJDBCドライバを登録。") ; Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/river_data", "Administrator","lled") ; System.out.println("データベース「jdbc:mysql://localhost/" + "river_data」へ接続。") ; } } } 下記、コマンドプロンプトにて実行画面。 D:\azMySq\uc\BaseJdbc>java BaseJdbc --------------------------------------- MySQLのJDBCドライバを登録。 java.sql.SQLException: Invalid authorization specification: Access denied for us er: 'Administrator@localhost' (Using password: YES) at org.gjt.mm.mysql.MysqlIO.init(MysqlIO.java:330) at org.gjt.mm.mysql.Connection.connectionInit(Connection.java:261) at org.gjt.mm.mysql.jdbc2.Connection.connectionInit(Connection.java:89) at org.gjt.mm.mysql.Driver.connect(Driver.java:167) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at BaseJdbc.main(BaseJdbc.java:20)

  • Tomcat+Postgresql 起動時のエラー

    以下のようなエラーが発生するのですが どういった原因が考えられるでしょうか? よろしくお願いいたします。 環境 postgresql-7.4.12 tomcat5.0 jdk1.4.2 以下、プログラムログ [FATAL] 2011-02-17 08:25:41 [TP-Processor6] org.postgresql.util.PSQLException: The backend has broken the connection. Possibly the action you have attempted has caused it to close. [WARN ] 2011-02-17 08:25:41 [TP-Processor6] java.lang.RuntimeException: org.postgresql.util.PSQLException: The backend has broken the connection. Possibly the action you have attempted has caused it to close. [FATAL] 2011-02-17 08:25:41 [TP-Processor3] org.postgresql.util.PSQLException: An I/O error has occured while flushing the output - Exception: java.net.SocketException: Broken pipe Stack Trace: java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:136) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:124) 以下、catalineログ -- [GC 1147257K->973413K(2073856K), 0.1046160 secs] org.postgresql.util.PSQLException: The backend has broken the connection. Possibly the action you have attempted has caused it to close. at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:168) at org.postgresql.core.QueryExecutor.executeV3(QueryExecutor.java:128) at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:101) at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:43) at org.postgresql.jdbc1.AbstractJdbc1Connection.execSQL(AbstractJdbc1Connection.java:875) at org.postgresql.jdbc1.AbstractJdbc1Connection.setAutoCommit(AbstractJdbc1Connection.java:1266) at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:266) at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:338)

  • JDBCでMySQLに接続

    Linuxにmysql-4.1.7をインストールして、JDBCドライバを入れ、javaからデータベースを操作しようとしています。 しかし、「mysqld_safe --user=mysql &」を実行してから、javaプログラムをコンパイルして実行すると、 java.sql.SQLException: Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying to connect to? (java.net.ConnectException) at org.gjt.mm.mysql.Connection.connectionInit(Connection.java:331) at org.gjt.mm.mysql.jdbc2.Connection.connectionInit(Connection.java:89) at org.gjt.mm.mysql.Driver.connect(Driver.java:167) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at HelloWorldJDBCMySQL.main(HelloWorldJDBCMySQL.java:15) というエラーが出てしまいます。原因がわかる方がおられましたら、ご指導のほどよろしくお願いいたします。

  • JAVA TOMCAT

    初心者です。よろしくお願いします。m(_ _)m eclipse3.1環境で、tomcat5.0をしようして、JAVAソースを実行したら、以下のようなエラーが発生し、解決できません。 お手数ですが、よろしくお願いします。 致命的: Error loading WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: org.apache.catalina.loader.StandardClassLoader@1fd6bea AddUserServlet java.lang.ClassNotFoundException: AddUserServlet at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1068) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:127) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) 2011/12/30 20:15:52 org.apache.catalina.core.StandardWrapperValve invoke 致命的: サーブレット adduser に例外を割り当てます java.lang.ClassNotFoundException: AddUserServlet at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1068) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:127) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619)

  • 『ClassNotFoundException: org.postgresql.Driver』というエラーが出る。

    CygwinにpostgreSQLをインストールして、JSPでデータベースを操作しようと考えています。 /usr/share/postgresql/java/postgresql.jarをCLASSPATHに追加し、以下に示すJSPを作成して実行したのですが、『java.lang.ClassNotFoundException: org.postgresql.Driver 』というエラーが出てデータベースにアクセスできません。 『$jar -xvf /usr/share/postgresql/java/postgresql.jar』を実行したところ、『org/postgresql/Driver.class』が抽出されましたので、ドライバクラスは間違ってはいないと思います。一体何が悪いのでしょうか。 <%@ page language="java" %> <%@ page contentType="text/html; charset=EUC_JP" %> <%@ page import="java.sql.*" %> <% Connection con = null; Statement stmt = null; try { Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql:(データベース名)"; con = DriverManager.getConnection(url, "(ユーザー名)", "(パスワード)"); stmt = con.createStatement(); (途中の処理) } catch(Exception e) { out.println(e); } finally { (データベースの切断処理) } postgreSQLはまだ始めたばかりですので初心者同然です。なるべく分かりやすく説明してくれると嬉しいです。 OSはWindowsXP, JSPコンテナはTomcat3.3.1を使用しています。どうぞよろしくお願い致します。

    • ベストアンサー
    • Java
  • Apache1.3.19+Tomcat3.2.1+PostgreSQL+VineLinuxを使用してます。

    以上のような環境でサーブレットとデータベースを扱おうとしています。 (TomcatはApacheにアドオンする形) 問題は、サーブレットでデータベースにアクセスしようとすると 以下のようなエラーメッセージが出力されます。 Error:500 Internal server Error Exception in: R( /myservlet + /servlet/Pgimage + null) - java.lang.NullPointerException at java.lang.ClassLoader.resolveClass0(Native Method) at java.lang.ClassLoader.resolveClass(ClassLoader.java:588) at org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.java:430) at org.apache.tomcat.loader.AdaptiveServletLoader.loadClass(AdaptiveServletLoader.java:174) at org.apache.tomcat.core.ServletWrapper.loadServlet(ServletWrapper.java:265) at org.apache.tomcat.core.ServletWrapper.init(ServletWrapper.java:289) at org.apache.tomcat.core.Handler.service(Handler.java:254) at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372) at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797) at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743 以上のような長いエラーが出てしまいます。 これは、サーバーの設定がいけないのでしょうか、 またはサーブレットがいけないのでしょうか?

  • oracle9iにJDBC接続が出来ない

    oracle9iにJDBCで接続したいのですがI/O例外が出てうまくいきません。 多分、DriverManager.getConnection の引数のURLが間違っているのだと思うのですが。 jdbc:oracle:thin:@<ホスト名>:<リスナのポート番号>:<Oracle SID> ホスト名・ポート番号・Oracle SID はどこを見ればわかるのでしょうか? ちなみに出ているエラーは以下のとうりです。 Exception in thread "main" java.sql.SQLException: I/O例外です。: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:335) at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:361) at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:442) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:321) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at JavaDataAccess01.main(JavaDataAccess01.java:13) 何か参考になるHPなどあれば教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • tomcatとapacheの連携

    tomcat4.0.2とapache1.3.26でwindows2000で連携させようとして↓ここを参考にインストール、設定しました。 http://www5b.biglobe.ne.jp/~y-tomy/tomcat/fig_include.html しかし、examples/servlet/はサンプル全て表示されるのですが、examples/jsp/はエラーが出て表示されません。どなたか原因がわかるかた教えてください。 エラーの内容 Apache Tomcat/4.0.2 - HTTP Status 500 - Internal Server Error javax.servlet.ServletException: サーブレット jsp のServlet.init()が例外を投げました at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:653) root cause java.lang.NoSuchMethodError: javax.servlet.ServletContext.getResourcePaths(Ljava/lang/String;)Ljava/util/Set; (エラーの内容長いため途中省略)

    • ベストアンサー
    • Java
  • JDBCに初めて挑戦しようとしたのですが。

    「JAVA+MySQL+Tomcatで始めるWebアプリケーション開発入門」という本でJDBCに初めて挑戦しようとしたのですが、下記のようなエラーが出てうまく実行できませんでした。 java.sql.SQLException: Access denied for user: 'Mulder@localhost' (Using passwor d: YES) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1229) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2558) at com.mysql.jdbc.Connection.<init>(Connection.java:1485) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java :266) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at JdbcTest.main(JdbcTest.java:12) Exception in thread "main" java.lang.NullPointerException at JdbcTest.main(JdbcTest.java:24) 原因など、わかる方がいたら教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JDBC PostgreSQLで必要なファイルはあるのでしょうか?

    LinuxでPostgreSQLのデータベースをJDBCでアクセスしたいのですが、以下のソースで次のエラーが発生します。何か必要なファイルでもあるのでしょうか? java.lang.ClassNotFoundException:org.postgres.Driver また、LinuxのODBCも必要なファイルがあるのでしょうか? import java.sql.*; class jdbcSample2 { public static void main(String argv[]) { int a; String b; try { //Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); //String url = "jdbc:odbc:test"; Class.forName ("org.postgres.Driver"); String url = "jdbc:postgresql://127.0.0.1:5432/test"; String user = ""; String password = ""; Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement (); String query = "select * from member;"; ResultSet rs = stmt.executeQuery (query); while(rs.next()){ a = rs.getInt(1); b = rs.getString(2); System.out.println(a + ", " + b); } rs.close(); stmt.close(); con.close(); } catch (SQLException ex) { System.err.println("SQL failed."); ex.printStackTrace (); } catch (Exception ex) { ex.printStackTrace (); } } }

専門家に質問してみよう