我请大家在HikariCP文档中找不到答案.鉴于我设置了以下池参数:
minimumIdle 1
idleTimeout 10 minutes
maxLifeTime 20 minutes
Run Code Online (Sandbox Code Playgroud)
当我的应用程序在夜间闲置(没有人请求)时,我希望Hikari在连接的最后一个请求后10分钟关闭每个连接,在最后一个连接关闭后创建一个新连接(并将其保存在池中),以及然后每20分钟关闭并重新创建一个空闲连接.我理解正确了吗?
事实是,在我的应用程序闲置一段时间后,我看到(通过下一个请求)以下异常:
WARN c.z.hikari.proxy.ConnectionProxy - Connection oracle.jdbc.driver.T4CConnection@3c63f80e <POOL_NAME> marked as broken because of SQLSTATE(08003), ErrorCode(17008).
java.sql.SQLRecoverableException: Closed Connection
Run Code Online (Sandbox Code Playgroud)
该连接可能已被Oracle关闭,无法使用.我会尝试使用上面的配置来避免这种情况.另一点是,我不明白为什么我从池中获得一个封闭的连接.这应该永远不会发生,因为Hikari在返回之前测试了连接的状态......
注意:我不是数据库的所有者,我无法配置它或让它重新配置以满足我的需要.我也无法访问其配置.
我们的设置是Spring 4.1.6,Hibernate 4.3.7和JPA 2.1 API,Hikari 2.1.0
当我编译我的GAE/GWT(Java)项目(编译所有6个排列)时,整个WAR文件夹在我的计算机上的权重为93.9 Mo(扩展的Mac OS日志).在GAE上部署时,管理控制台(配额详细信息页面)显示我的应用程序占用了免费配额的18%.含义180Mb.这怎么可能 ?我错过了什么?谷歌是否使用大块文件系统?如何优化可用存储空间的使用?我已经JARing我的'classes'文件夹了,但是增益(就空间而言......)是不相关的.
最大的问题(从我的角度来看)是我自己的GWT +服务器端代码+'外部'库(PDFJet)需要1.9Mb.所有其余的(> 91Mb)由appengine和datanucleus自己的库来完成.为什么我们需要在部署中包含这些内容?它们被大家使用.我认为,当这些将集中和自动部署时,对我们所有人来说会更好.我不明白.
对此有何建议或意见?
我阅读了文档,谷歌搜索,但仍然无法想象如何读取blob作为字节数组.
我能够生成PDF文件并将它们存储在blobstore中.我也可以使用serve()为这些blob提供服务,没问题.这一切都很好.
现在我想检索其中一个blob,并将其作为字节数组读取,以将其传递给Mail API,以便作为Mime附件发送.正如我所理解的,Mail API仅接受字节数组作为附件数据.
我看到了BufferedInputStream的read()方法,但它建议获取n个字节.我需要立刻阅读完整的blob.在阅读之前我不知道它的长度.