标题几乎说明了一切。
我正在开发一个Java
网络应用,使用Elastic Beanstalk
在Datanucleus 4.0.6
中托管,以便与postgresql 9.3
数据库进行通信。数据库托管在Amazon RDS
。
我已经尝试了我能想到的各种设置组合:
VPCs
无论我做什么,在尝试开始与数据库通信时都会收到以下错误消息。
No suitable driver found for jdbc:postgresql://myvalidurl.com:5432/ebdb
如果我myvalidurl
绝对无效,我会得到同样的错误,所以我不知道我是否根本不能"看到"数据库,或者如果端口关闭,或者某种程度上它只是没有说出预期的postgres类型。
最后,我可以使用本地数据库运行它,一切正常。
在配置Elastic Beanstalk
与RDS
交谈时,有没有人知道我可能错过了什么?
答案 0 :(得分:1)
当postgre-jdbc.jar位于your.war#WEB-APP / lib /文件夹中时会发生这种错误。从那里删除它并将其放在$ CATALINA_HOME / lib /文件夹中,它将正常工作。
问题出在DriverManager类使用的类加载器中。
答案 1 :(得分:0)
事实证明,Tomcat 8
的默认Elastic Beanstalk
安装包括commons-pools
和dbcp
。 Datanucleus
正在使用dbcp
实现连接到数据库,无论出于何种原因,完整的jdbc
URI都不会一直传递到调用链。
我确定这是某种persistence.xml
类型的配置问题,但就我的目的而言,解决方案很简单:
<property name="datanucleus.connectionPoolingType" value="None"/>