首先,我不是Java開發人員。我只需要獲得一個簡單的jsp示例,它連接到postgres數據庫並檢索一些信息。javax.naming.NamingException:無法創建資源工廠實例
我知道它運行在本地env,但是當我嘗試在生產服務器(Apache Tomcat 6.0.29)上運行時,它只是不起作用。頁面會顯示以下異常:
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc/postgres"
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
我注意到,當我重新加載應用程序,catalina.out中顯示了以下問題:
Aug 23, 2011 2:21:07 PM org.apache.catalina.core.NamingContextListener addResource
WARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
在WEB-INF/lib中,我有以下文件:
# ls -lh
total 1.3M
-rwxr-xr-x 1 tomcat tomcat 17K Aug 23 14:15 jstl.jar
-rwxr-xr-x 1 tomcat tomcat 160K Mar 5 2007 naming-factory-dbcp.jar
-rwxr-xr-x 1 tomcat tomcat 528K Aug 23 14:18 postgresql-9.0-801.jdbc4.jar
-rwxr-xr-x 1 tomcat tomcat 313K Aug 23 14:16 standard.jar
-rwxr-xr-x 1 tomcat tomcat 248K Aug 22 22:18 tomcat-dbcp.jar
我試着用谷歌搜索這個,但所有的解決方案都提到了已經存在的命名工廠dbcp.jar。我應該做什麼的想法?
謝謝!
編輯
這裏是我的Tomcat的lib:
-rw-r--r-- 1 tomcat nobody 11K Jun 8 2009 lib/annotations-api.jar
-rw-r--r-- 1 tomcat nobody 49K Jun 8 2009 lib/catalina-ant.jar
-rw-r--r-- 1 tomcat nobody 121K Jun 8 2009 lib/catalina-ha.jar
-rw-r--r-- 1 tomcat nobody 1.1M Jun 8 2009 lib/catalina.jar
-rw-r--r-- 1 tomcat nobody 225K Jun 8 2009 lib/catalina-tribes.jar
-rw-r--r-- 1 tomcat nobody 28K Jun 8 2009 lib/el-api.jar
-rw-r--r-- 1 tomcat nobody 101K Jun 8 2009 lib/jasper-el.jar
-rw-r--r-- 1 tomcat nobody 501K Jun 8 2009 lib/jasper.jar
-rw-r--r-- 1 tomcat nobody 1.4M Jun 8 2009 lib/jasper-jdt.jar
-rw-r--r-- 1 tomcat nobody 75K Jun 8 2009 lib/jsp-api.jar
-rw-r--r-- 1 tomcat nobody 86K Jun 8 2009 lib/servlet-api.jar
-rw-r--r-- 1 tomcat nobody 732K Jun 8 2009 lib/tomcat-coyote.jar
-rw-r--r-- 1 tomcat nobody 193K Jun 8 2009 lib/tomcat-dbcp.jar
-rw-r--r-- 1 tomcat nobody 65K Jun 8 2009 lib/tomcat-i18n-es.jar
-rw-r--r-- 1 tomcat nobody 43K Jun 8 2009 lib/tomcat-i18n-fr.jar
-rw-r--r-- 1 tomcat nobody 48K Jun 8 2009 lib/tomcat-i18n-ja.jar
您可能沒有正確初始化jdbc/postgres驅動程序。請檢查語法並檢查所需的庫是否加載到項目類路徑中。正確的方法是'jdbc:postgresql:// server_name' – Rakesh
很好,你包含了'Tomcat/lib'的列表。但家中回答的關鍵點是,您應該從不**在webapp的'/ WEB-INF/lib'中包含特定於服務器的庫。它使得webapp不適用於不同製造/版本的服務器。這會導致類路徑問題。你從'/ WEB-INF/lib'中刪除了它們嗎?應該保持'Tomcat/lib'文件夾不變。最高的情況下,您將JDBC驅動程序放在那裏,但絕對不要更改或刪除Tomcat自己的庫。 – BalusC
@Rakesh嗨,它看起來是正確的。相同的應用程序在我的本地主機上運行,但不在生產服務器上運行。 – Fernando