1

私はRESTfulWebサービスを構築しています。シンプルなクライアントとシンプルなサーバーであるJax-rs(Jersey)を使用しています。PostgreSQLデータベースとそれに対応するJDBCドライバーを添付しました。

サーバーとクライアントは、データベース関連のものがない場合に完全に機能します。(したがって、クライアント/サーバーコードは問題ありません)

サーバーを拡張してデータベースにクエリを実行すると、問題が発生します。
サーバーがスローします。No suitable driver found for jdbc:postgresql://localhost/MyDataBase
クライアントが次のように報告します。500 internal service error

プレーンな古いJavaアプリケーション(同じパッケージ内)から同じ方法でデータベースを利用する場合、問題はまったくありません(したがって、接続/クエリコードも問題ありません)。

エラーが発生するのは、サーバーからクエリを実行したときだけです。したがって、コードに問題はなく、JDBCドライバーの場所だけに問題があることがわかりました。

私はもう試した:

  • postgresqlドライバー.jarをプロジェクトのほぼすべての場所に配置します
  • Class.forName( "../../.. postgresql.jar")

私が知りたいのですが:

  • この.jarは、動的なWebプロジェクトのどこに配置されることになっていますか?
  • なぜJavaアプリケーションでは機能するのに、アプリケーションサーバー内では機能しないのですか?
4

1 に答える 1

1

.jar ファイル全体をドライバーとしてロードすることはできません。そこから Driver クラスを選択する必要があります。

Class.forName("../../..postgresql.jar")

上記のコードは正しくないようです。

代わりに次のコードを試してください。

Class.forName("org.postgresql.Driver");
Connection connection = null;
connection = DriverManager.getConnection(
   "jdbc:postgresql://hostname:port/dbname","username", "password");
connection.close();
于 2013-02-23T07:58:39.447 に答える