2015-03-31 129 views
0

标题几乎说明了一切。Datanucleus + Postgres 9.3 +亚马逊RDS故障

我正在开发一个Java web应用程序,使用Datanucleus 4.0.6沟通的数据库Elastic Beanstalk主办。数据库托管在Amazon RDS

我试过的设置每一个组合我能想到的:

  • 获得青苗创建DB
  • 手动创建一个私人DB
  • 手动创建公共DB
  • 公共分配/私人数据库全部可用VPCs
  • 使用postgres 9.4而不是9.3

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

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

我得到同样的错误,如果我做myvalidurl最肯定无效的,所以如果我根本无法“看到” DB我也说不清,或者如果端口是关闭的,或者不知它只是说的不是预期的postgres类型。

最后,我可以用本地数据库运行这一切,一切都很好。

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

+0

为什么不只是写一对夫妇的JDBC行代码,加载驱动程序,并尝试访问URL并查看JDBC抛出什么异常,包含堆栈跟踪? – 2015-04-01 07:17:49

+0

我刚刚尝试过,它的工作......这使得JDO失败变得更加混乱。 – Tim 2015-04-01 18:10:05

+0

所以看看抛出的堆栈跟踪,并与你正在做的事情进行比较...有什么区别? JDO可能会使用连接池为一件事 – 2015-04-02 04:44:25

回答

0

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

我敢肯定,这是某种persistence.xml类型的配置问题,但我的目的,解决方案很干脆:

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

我认为默认情况下,DataNucleus实际上将使用内置的DBCP,而不是CLASSPATH中的某个其他dbcp jar。但是,您仍然可以选择使用任何其他连接池 – 2015-04-03 08:10:28

1

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

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

+0

这不是问题。 – Tim 2015-04-02 18:01:52