我正在构建一个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();