gpt4 book ai didi

java - 在 servlet 中使用我的 Web 应用程序池?

转载 作者:行者123 更新时间:2023-12-02 09:48:48 25 4
gpt4 key购买 nike

我正在使用 Google 应用引擎 JAVA 8 和 servlet 3.1,并且希望使用 HikariCP 进行池化。

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

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

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

doGet(){
DatabaseObject db = new DatabaseObject()
Connection conn = db.getConnection()
db.createTable(conn)
db.readData(conn)
...
conn.close()
}

现在我已经看到了很多池化示例,例如 this one但首先我不确定这就是我想要实现的目标,我也不太了解整个过程

欢迎任何示例、解释,因为我尝试在网络上搜索但找不到 servlet 的示例和解释。所以也许我想错了方向

最佳答案

该示例看起来像是将池存储在应用程序(servlet)上下文中。

我的做法不同。通常我创建一个类,将其命名为 MyDb。然后我向其中添加各种方法来访问数据。其中有一个 getConnection() 方法。

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

类似这样的内容(这是针对应用程序引擎的,因此未指定端口):

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();
}
}

关于java - 在 servlet 中使用我的 Web 应用程序池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56468715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com