Datanucleus + Postgres 9.3 +亚马逊RDS失败

时间:2015-03-31 19:35:00

标签: java postgresql elastic-beanstalk datanucleus amazon-rds

标题几乎说明了一切。

我正在开发一个Java网络应用,使用Elastic BeanstalkDatanucleus 4.0.6中托管,以便与postgresql 9.3数据库进行通信。数据库托管在Amazon RDS

我已经尝试了我能想到的各种设置组合:

  • 获取beanstalk以创建数据库
  • 手动创建私人数据库
  • 手动创建公共数据库
  • 将公共/私人数据库分配给所有可用的VPCs
  • 使用postgres 9.4代替9.3

无论我做什么,在尝试开始与数据库通信时都会收到以下错误消息。

 No suitable driver found for jdbc:postgresql://myvalidurl.com:5432/ebdb

如果我myvalidurl绝对无效,我会得到同样的错误,所以我不知道我是否根本不能"看到"数据库,或者如果端口关闭,或者某种程度上它只是没有说出预期的postgres类型。

最后,我可以使用本地数据库运行它,一切正常。

在配置Elastic BeanstalkRDS交谈时,有没有人知道我可能错过了什么?

2 个答案:

答案 0 :(得分:1)

当postgre-jdbc.jar位于your.war#WEB-APP / lib /文件夹中时会发生这种错误。从那里删除它并将其放在$ CATALINA_HOME / lib /文件夹中,它将正常工作。

问题出在DriverManager类使用的类加载器中。

答案 1 :(得分:0)

事实证明,Tomcat 8的默认Elastic Beanstalk安装包括commons-poolsdbcpDatanucleus正在使用dbcp实现连接到数据库,无论出于何种原因,完整的jdbc URI都不会一直传递到调用链。

我确定这是某种persistence.xml类型的配置问题,但就我的目的而言,解决方案很简单:

<property name="datanucleus.connectionPoolingType" value="None"/>