Java 在servlet中为我的web应用使用池?

Java 在servlet中为我的web应用使用池?,java,google-app-engine,servlets,hikaricp,Java,Google App Engine,Servlets,Hikaricp,我正在使用GoogleAppEngineJava8和Servlet3.1,并希望使用HikariCP进行池 为了更好地理解,我将用伪代码编写我的逻辑 此时,当用户连接到servlet时,它每次都会创建一个到数据库的新连接 所以我的servlet看起来有点像这样 doGet(){ DatabaseObject db = new DatabaseObject() Connection conn = db.getConnection() db.createTable(conn) db.

我正在使用GoogleAppEngineJava8和Servlet3.1,并希望使用HikariCP进行池

为了更好地理解,我将用伪代码编写我的逻辑

此时,当用户连接到servlet时,它每次都会创建一个到数据库的新连接

所以我的servlet看起来有点像这样

doGet(){
  DatabaseObject db = new DatabaseObject()
  Connection conn = db.getConnection()
  db.createTable(conn)
  db.readData(conn)
  ...
  conn.close()
}
现在我已经看到了许多池的例子,比如 但首先我不确定这是我想要实现的,我也不太了解整个过程


任何例子,解释都是受欢迎的,因为我试图在网上搜索,但找不到一些servlet。因此,可能我的想法是错误的

该示例似乎将池存储在应用程序servlet上下文中

我做的不一样。通常我创建一个类,称之为MyDb。然后我添加了各种方法来访问数据。其中有一个getConnection方法

在内部,MyDb有自己的连接池。getConnection只返回池中的连接。在创建第一个MyDb时初始化池

类似于此的内容适用于app engine,因此未指定端口:

private static DataSource pool = null;

public MyDb( String dbhost, String dbdsn, String dbuid, String dbpwd )
{
    try
    {
        if( MyDb.pool == null )
        {
            String dbconn = null;
            String dbclassname = null;

            HikariConfig config = new HikariConfig();

            dbconn = "jdbc:google:mysql://" + dbhost + "/" + dbdsn;
            dbclassname = "com.mysql.jdbc.GoogleDriver";

            config.setJdbcUrl( dbconn );
            config.setUsername( dbuid );
            config.setPassword( dbpwd );

            MyDb.pool = new HikariDataSource( config );
        }
        catch( Exception e )
        {
            logger.error( e.getMessage() );
        }
    }

    protected Connection getConnection() throws Exception
    {
        return pool.getConnection();
    }
}

你们的问题到底是什么?我想我已经找到了一个解决方案,我只需要回到谷歌的例子。但无论如何,除了使用servletContext,我找不到另一种方法来查找/初始化池并在servlet中使用。还有别的办法吗?谢谢你的回答。如果连接丢失或超时怎么办。我不太明白逻辑。提前谢谢