1

我正在构建一个 RESTful Web 服务。我正在使用 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 回答