반응형
data Source를 사용하여 내 서블릿을 mysql 데이터베이스에 연결하려고합니다. 그러나 내 서블릿을 실행할 때마다 다음 예외가 발생합니다.
java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z
org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:913)
org.apache.tomcat.dbcp.dbcp2.PoolableConnection.validate(PoolableConnection.java:282)
org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:356)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2306)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2289)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2038)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532)
Servlet.AbdulTayyebs.processRequest(AbdulTayyebs.java:36)
Servlet.AbdulTayyebs.doGet(AbdulTayyebs.java:57)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
내 Content.xml은 다음과 같습니다.
<Resource name="jdbc/abdultayyebs" auth="Container"
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:4000/abdultayyebs?zeroDateTimeBehavior=convertToNull"
username="root" password="february1996" maxActive="5" maxIdle="2"
maxWait="1000"/>
내 web.xml은 다음과 같습니다.
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/abdultayyebs</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth></resource-ref>
그리고 여기 내 서블릿 AbdulTayyebs가 있습니다.
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
public class AbdulTayyebs extends HttpServlet {
DataSource ds=null;
@Override
public void init(ServletConfig config)throws ServletException{
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
ds = (DataSource)envContext.lookup("jdbc/abdultayyebs");
} catch (Exception e) {
throw new ServletException("Something went wrong while Initializing the Servlet",e);
}
}
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException {
PrintWriter write = response.getWriter();
try {
Others.Action a = Others.ActionFactory.CreateAction(request);
try(Connection c=ds.getConnection()){
String page = a.Execute(c,request,request.getSession(false));
request.getRequestDispatcher(page).forward(request, response);
}
}
catch (SQLException e) {
write.println(e);
}
catch (ServletException e) {
write.println(e);
}
catch (Exception e) {
write.println(e);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
나는 또한 tomcat의 lib 폴더에 mysql jdbc 드라이버를 추가했지만 이것이 도움이되지 않았습니까? 누군가 나를 도울 수 있다면 매우 감사 할 것입니다.
해결 방법
java.lang.AbstractMethodError : com.mysql.jdbc.Connection.isValid (I) Z
참조 페이지 https://stackoverflow.com/questions/32783706
반응형
'MySql' 카테고리의 다른 글
MySQL URL의 특정 ID로 MySQL 데이터베이스에서 데이터 가져 오기 (0) | 2020.11.17 |
---|---|
MySQL-기존 테이블에서 각 단어의 첫 글자를 대문자로 표시 (0) | 2020.11.17 |
MySQL mysql의 열에서 모든 공백을 제거 하시겠습니까? (0) | 2020.11.17 |
MySQL Amazon Aurora에서 Amazon RDS의 네이티브 MySQL로 다시 마이그레이션 할 수 있습니까? (0) | 2020.11.17 |
MySQL C #을 사용하여 MySql에 날짜 삽입 (0) | 2020.11.17 |
댓글