2015-03-31 181 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