Google app engine JDBC和应用程序引擎的NullPointerException

Google app engine JDBC和应用程序引擎的NullPointerException,google-app-engine,Google App Engine,几天来,我一直在努力解决谷歌应用程序引擎(GoogleAppEngine)中使用Java的一个问题 很多时候(大约50%的时间)当我尝试请求与云Sql实例的连接时,连接返回空值,导致在尝试调用云Sql查询时(调用.prepareCall(stored_proc))出现多条NullPointerException消息 我在一个项目服务中拥有最新的appenginejavasdk,它与使用这个Java后端的Python内置的其他服务共享 在某个时间之后,实例可能会崩溃吗(我现在只是在测试,所以我使用

几天来,我一直在努力解决谷歌应用程序引擎(GoogleAppEngine)中使用Java的一个问题

很多时候(大约50%的时间)当我尝试请求与云Sql实例的连接时,连接返回空值,导致在尝试调用云Sql查询时(调用.prepareCall(stored_proc))出现多条NullPointerException消息

我在一个项目服务中拥有最新的appenginejavasdk,它与使用这个Java后端的Python内置的其他服务共享

在某个时间之后,实例可能会崩溃吗(我现在只是在测试,所以我使用默认缩放)

这是返回null的代码:

        Class.forName("com.mysql.jdbc.GoogleDriver");
        url = "jdbc:google:mysql://project:instance/database?user=root";
        log.info(url);
        return DriverManager.getConnection(url);
这是我的配置文件的一部分:

<application>app</application>
<module>mod</module>
<version>1</version>
<threadsafe>true</threadsafe>

<use-google-connector-j>true</use-google-connector-j>
app
摩登派青年
1.
真的
真的
我尝试了其他帖子的一些建议,但都没有成功


欢迎提出任何建议,提前谢谢。

我在使用谷歌云SQL和应用程序引擎时遇到了同样的问题

我通过自己管理连接池解决了这个问题。我意识到,当您为每个请求请求一个新连接并在线程完成时关闭它时。其他请求将返回一个null,从而导致NullPointException

我决定做下面的事情,这对我来说已经有两年的时间了

  • 打开一个连接并将其保持在具有多个连接的静态类中
  • 每次我想找到与数据库的连接时,我都会首先检查是否有可用的连接供我使用
  • 如果一个查询终止了连接,这意味着我需要请求另一个额外的连接,以防连接丢失

我将补充这一点作为答案,因为这并不完全是Chrispinus提到的,尽管他给了我一个解决方案的好主意

我深入研究了代码,发现有些方法没有关闭数据库连接。我以为他们都这么做了,但看看每一种方法,我发现我错了


因此,尽管这听起来很明显,但检查连接是否被正确关闭(或管理,如Chrispinus所说)。

非常感谢您的回答,Chrispinus,我当然可以尝试一下,看看会发生什么,我会让您知道。还有一个问题:你的应用程序中有连接限制吗?你是怎么处理的?如果我记得清楚的话,appengine允许每个实例最多有12个并发连接。