tomcat 没有找到合适的驱动程序Postgres JDBC

rekjcdws  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(287)

当我在tomcat上测试我的web服务时,我收到一个“没有找到合适的驱动程序”错误。我在lib文件夹中有JDBC .jar,就像各种教程说的那样。下面是我的代码:

  1. public class PostDBConnection {
  2. PreparedStatement st;
  3. ResultSet rs;
  4. Connection con;
  5. DataSource ds;
  6. InitialContext cxt;
  7. String url = "jdbc:postgresql://127.0.0.1:5432/UptonDB";
  8. String user = "*****";
  9. String password = "*******";
  10. String query = "";
  11. StringBuilder response = new StringBuilder();
  12. @SuppressWarnings("unused")
  13. public String getInfo(){
  14. int size = 0;
  15. try {
  16. cxt = new InitialContext();
  17. ds = (DataSource) cxt.lookup("java:comp/env/jdbc/UptonDB");
  18. } catch (Exception e) {
  19. // TODO Auto-generated catch block
  20. e.printStackTrace();
  21. }
  22. try{
  23. try {
  24. Class.forName("org.postgres.Driver");
  25. } catch (ClassNotFoundException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. }
  29. con = DriverManager.getConnection(url, user, password);
  30. st = con.prepareStatement("SELECT VERSION()");
  31. rs = st.executeQuery();
  32. while(rs.next())
  33. {
  34. response.append(rs.getString(1));
  35. }
  36. }
  37. catch(SQLException exc)
  38. {
  39. Logger lgr = Logger.getLogger(PostDBConnection.class.getName());
  40. lgr.log(Level.SEVERE, exc.getMessage(), exc);
  41. }
  42. finally {
  43. try {
  44. if (rs != null) {
  45. rs.close();
  46. }
  47. if (st != null) {
  48. st.close();
  49. }
  50. if (con != null) {
  51. con.close();
  52. }
  53. } catch (SQLException ex) {
  54. Logger lgr = Logger.getLogger(PostDBConnection.class.getName());
  55. lgr.log(Level.WARNING, ex.getMessage(), ex);
  56. }
  57. }
  58. return response.toString();
  59. }

字符串
这里还有我按照Tomcat网站上的说明创建的web.xml和context.xml文件:

  1. <resource-ref>
  2. <description>PostgreSQL Data Source </description>
  3. <res-ref-name>jdbc/UptonDB</res-ref-name>
  4. <res-type>javax.sql.DataSource</res-type>
  5. <res-auth>Container</res-auth>
  6. </resource-ref>


web.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Context>
  3. <Resource name="jdbc/UptonDB" auth="Container" type="javax.sql.DataSource"
  4. removeAbandoned="true" removeAbandonedTimeout="30" maxActive="80"
  5. maxIdle="30" maxWait="10000" username="*****" password="*******"
  6. driverClassName="org.postgresql.Driver"
  7. url = "jdbc:postgresql://127.0.0.1:5432/UptonDB" useUnicode="true"
  8. characterEncoding="utf-8" characterSetResults="utf8"/>
  9. </Context>


任何帮助是赞赏感谢!

ca1c2owp

ca1c2owp1#

正确的驱动程序名称是org.postgresql.Driver,而不是org.postgres.Driver
更新:
检查这个页面,给予它一点研究,你应该没问题:)http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
然后,而不是使用DriverManager,你应该做一个查找(你已经做了),并从数据源获得一个连接(你可以从你的代码中删除pwd,user和其他未使用的东西):

  1. Context initContext = new InitialContext();
  2. Context envContext = (Context)initContext.lookup("java:/comp/env");
  3. DataSource ds = (DataSource)envContext.lookup("jdbc/UptonDB");
  4. Connection conn = ds.getConnection();

字符串

相关问题