我应该把JDBC驱动程序放在哪里,以便它作为Jax的Web服务的一部分工作



我正在构建一个RESTful web服务。我使用的是Jax-rs(Jersey),一个简单的客户端和一个简单服务器。我已经附加了一个PostgreSQL数据库和它对应的JDBC驱动程序。

服务器&当不涉及数据库内容时,客户端可以完美地工作。(所以客户端/服务器代码很好)

当我扩充服务器以查询数据库时,问题就开始了:
服务器抛出:No suitable driver found for jdbc:postgresql://localhost/MyDataBase
客户端报告500 internal service error

如果我从一个普通的旧java应用程序(在同一个包中)以相同的方式使用数据库,那么就没有任何问题(因此连接/查询代码也很好)。

只有当我从服务器上查询它时,我才会得到错误。因此,我认为代码没有问题,只是JDBC驱动程序的位置有问题。

我试过:

  • 在我的项目中,将postgresqldriver.jar放在几乎所有地方
  • Class.forName("../../..postgresql.jar")

我想知道:

  • 这个.jar在动态web项目中应该放在哪里
  • 为什么它适用于java应用程序,而不适用于应用程序服务器

不能将整个.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();

最新更新