Java 我可以在谷歌应用程序引擎上使用HikariCP吗
在AppEngine上寻找连接池解决方案,使用云SQL,会出现多个条目,建议HikariCP应该可以工作,因为它允许外部ThreadFactory配置。比如,Java 我可以在谷歌应用程序引擎上使用HikariCP吗,java,google-app-engine,google-cloud-sql,hikaricp,Java,Google App Engine,Google Cloud Sql,Hikaricp,在AppEngine上寻找连接池解决方案,使用云SQL,会出现多个条目,建议HikariCP应该可以工作,因为它允许外部ThreadFactory配置。比如, 配置如下所示: import com.google.appengine.api.ThreadManager; ... HikariConfig lConfig = new HikariConfig(); config.setThreadFactory(ThreadManager.backgroundThreadFactory()
import com.google.appengine.api.ThreadManager;
...
HikariConfig lConfig = new HikariConfig();
config.setThreadFactory(ThreadManager.backgroundThreadFactory());
...
但也有问题,
事实上,一次快速的尝试暴露了应用程序引擎受限的“沙盒”环境带来的多个问题
所以问题依然存在;有人在Google App Engine上成功实现了HikariCP吗?是的,我已经在Google App Engine上实现了HikariCP,但是有一些考虑因素 谷歌应用引擎使用
- 自动缩放
- 基本比例
- 手动缩放
public class MyConnectionProvider implements ConnectionProvider, Configurable, Stoppable
{
...
public void configure(Map props) throws HibernateException
{
try
{
mHikariConfig = HikariConfigurationUtil.loadConfiguration(props);
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production)
{
mHikariConfig.setDriverClassName("com.mysql.jdbc.GoogleDriver");
mHikariConfig.setJdbcUrl("jdbc:google:mysql://project-xxx:database/xxx");
mHikariConfig.setThreadFactory(ThreadManager.backgroundThreadFactory());
}
else
{
mHikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
mHikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/xxx");
}
mHikariConfig.addDataSourceProperty("databaseName", "xxx");
mHikariConfig.setUsername("USERNAME");
mHikariConfig.setPassword("PASSWD");
mHikariConfig.setRegisterMbeans(false);
mHikariConfig.setMaximumPoolSize(12);
mHikariConfig.addDataSourceProperty("cachePrepStmts", "true");
mHikariConfig.addDataSourceProperty("useServerPrepStmts", "true");
mHikariConfig.addDataSourceProperty("prepStmtCacheSize", "250");
mHikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
mHikariDataSource = new HikariDataSource(mHikariConfig);
}
catch (Exception e)
{
throw new HibernateException(e);
}
}
...
}
数据库名称已经在JdbcUrl中,但我必须再次指定它。
另一个重要的配置设置是
mHikariConfig.setRegisterMbeans(false);
这将禁用应用程序引擎上的受限java管理扩展。之后,如何使用此ConnectionProvider而不是HikariConnectionProvider?你能给我完整的相关代码吗?只需在persistence.xml配置()中指定它我正在使用Springboot 2.0如何应用它?因为找不到persistence.xml。实际上,如果我不使用ThreadManager(保留默认值)。这也是工作。但30分钟后(随机)。它出错了。所以我不知道为什么会出现错误。因为ThreadManager或其他原因。请查看depsypher的关于Springboot的回答,这是基本知识,只需查看文档即可。