我有一個AuthorizationServlet,當用戶單擊登錄頁面中的按鈕時會調用它。這裏是一塊servlet的doPost方法的代碼:Tomcat內部錯誤
AuthorizationBean bean = new AuthorizationBean();
String login = (String) request.getSession().getAttribute("login");
String password = (String) request.getSession().getAttribute("password");
try {
UserType type = bean.getRoleOfUser(login, password);
switch(type) {
...
}
} catch (DaoException ex) {
throw new ServletException(ex.getMessage());
}
我已經被遺漏的一些代碼,因爲它是不適用的問題。其實,DaoException
只能在這一行拋出UserType type = bean.getRoleOfUser(login, password);
在方法getRoleOfUser
我使用Tomcat的連接池(說明是如何得到的連接是在第一篇文章here)
而且這裏做數據庫的連接是我的上下文.XML它創建數據庫連接的資源:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/Project">
<Resource name="jdbc/Project" auth="Container"
type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000"
username="name"
password="password"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:XE"/>
</Context>
當AuthorizationServlet叫我得到這樣的錯誤:
javax.servlet.ServletException: Error instantiating servlet class com.tspp.common.AuthorizationServlet
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
java.lang.Thread.run(Thread.java:662)
root cause
java.lang.NoClassDefFoundError: com/tspp/dao/exceptions/DaoException
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
java.lang.Class.getConstructor0(Class.java:2699)
java.lang.Class.newInstance0(Class.java:326)
java.lang.Class.newInstance(Class.java:308)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
java.lang.Thread.run(Thread.java:662)
root cause
java.lang.ClassNotFoundException: com.tspp.dao.exceptions.DaoException
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
java.lang.Class.getConstructor0(Class.java:2699)
java.lang.Class.newInstance0(Class.java:326)
java.lang.Class.newInstance(Class.java:308)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
java.lang.Thread.run(Thread.java:662)
我試圖調試它,但調試器甚至沒有得到servlet的doPost方法。 實際上,當我啓動程序(在servlet激活之前)時拋出了最後2個異常
我該如何解決這個問題?
你的部署看起來像什麼(EAR,WAR等)?以及DAOException類在最終部署中的位置。它是WEB-INF目錄中的類嗎?是被震驚了嗎? – nsfyn55 2011-06-13 15:01:53
我通過NetBeans IDE運行項目。 DaoException類駐留在WEB-INF目錄中 – maks 2011-06-13 15:05:38