DBCP Pool does not work in Servlet but works in standalone app

219 Views Asked by At

Pool doesn't in servlet but works in standalone appication.

Pool class is common in two cases:

public class Pool {
private static DataSource ds;

static {
    DriverAdapterCPDS cpds = new DriverAdapterCPDS();
    try {
        cpds.setDriver("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    cpds.setUrl("jdbc:mysql://localhost:3306/collage");
    cpds.setUser("root");
    cpds.setPassword("r00t");

    SharedPoolDataSource tds = new SharedPoolDataSource();
    tds.setConnectionPoolDataSource(cpds);
    tds.setMaxTotal(10);
    /*tds.setMaxWait(50);
    tds.setMaxTotal();*/

    tds.setMaxTotal(50);

    ds = tds;
}

public static Connection getConnection() throws SQLException {
    return ds.getConnection();
}

for standalone class it works as following

public class MainClass {
public static void main(String[] args) {
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;

    try {
        connection = Pool.getConnection();
        // Do work with connection
        statement = connection.createStatement();
        String selectEmployeesSQL = "select * from students";
        resultSet = statement.executeQuery(selectEmployeesSQL);

        while (resultSet.next()) {
            printTestTable(resultSet);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finnaly {
        ...
    }
}

And from part from servlet is following:

@WebServlet("/Demo.do")
public class DemoController extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ResultSet rsObj = null;
        Connection connObj = null;
        PreparedStatement pstmtObj = null;

        try {
            connObj = Pool.getConnection();
        ...

And exception is here"

    HTTP Status 500 – Internal Server Error

Type Exception Report

Message Servlet execution threw an exception

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

java.lang.NoClassDefFoundError: Could not initialize class am.ak.dao.jdbc.connections.Pool
    test.DemoController.doGet(DemoController.java:27)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Note The full stack trace of the root cause is available in the server logs.  

Thanks.

ADDED:

Artifacts in Project settings:enter image description here

RESOLVED:

So this two lib were missed )

enter image description here

Interesting: In POM I added only one dependency bot it shoes two :

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.5.0</version>
</dependency>
0

There are 0 best solutions below