2015-10-04 64 views
1

我試圖部署到AWS使用JHipster開發的應用程序,但試圖這樣做時出現錯誤。它看起來像我無法連接到數據庫。 我創建了一個簡單的JSP頁面,通過jdbc直接連接到數據庫,它工作正常,所以看起來我在配置應用程序時出錯了。jhipster RDS連接問題

這是我目前application.yml:

spring: 
    profiles: 
     active: prod 
    datasource: 
     dataSourceClassName: com.mysql.jdbc.jdbc2.optional.MysqlDataSource 
     url: jdbc:mysql://rds_url:3306/db?user=user&password=password 
     databaseName: db 
     serverName: rds_url 
     username: user 
     password: password 
     cachePrepStmts: true 
     prepStmtCacheSize: 250 
     prepStmtCacheSqlLimit: 2048 
     useServerPrepStmts: true 

這是我在日誌中看到:

Caused by: com.zaxxer.hikari.pool.PoolInitializationException: Exception during pool initialization 
    at com.zaxxer.hikari.pool.BaseHikariPool.initializeConnections(BaseHikariPool.java:542) 
    at com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:171) 
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:60) 
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:48) 
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:80) 
    at com.test.config.DatabaseConfiguration.dataSource(DatabaseConfiguration.java:83) 
    at com.test.config.DatabaseConfiguration$$EnhancerBySpringCGLIB$$b2394f0e.CGLIB$dataSource$1(<generated>) 
    at com.test.config.DatabaseConfiguration$$EnhancerBySpringCGLIB$$b2394f0e$$FastClassBySpringCGLIB$$e28d8821.invoke(<generated>) 
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309) 
    at com.test.config.DatabaseConfiguration$$EnhancerBySpringCGLIB$$b2394f0e.dataSource(<generated>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) 
    ... 137 more 
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:389) 
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1038) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:338) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2237) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2270) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:389) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) 
    at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:422) 
    at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:134) 
    at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:105) 
    at com.zaxxer.hikari.pool.BaseHikariPool.addConnection(BaseHikariPool.java:438) 
    at com.zaxxer.hikari.pool.BaseHikariPool.initializeConnections(BaseHikariPool.java:540) 
    ... 152 more 
Caused by: java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:213) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:297) 
    ... 169 more 

這裏有一個鏈接到更詳細logs

任何幫助將深表謝意。

謝謝, Jodevan。

回答

1

好的。我做到了。

爲了測試yml配置文件中是否存在一些問題,我決定直接在DatabaseConfiguration.java文件中對數據庫屬性進行硬編碼,並且它很簡單! 當主頁被渲染時,我的驚喜是:開發模式! 我不知道這是怎麼發生的,因爲包應該是在生產配置文件激活的情況下生成的。這就是正在描述here產生的包:

mvn -Pprod package 

但我忘了,我還需要設置在Tomcat中這個環境屬性。 順便說一句,因爲這是一個Tomcat環境屬性,所以需要重新啓動EBS環境。

最後但並非最不重要的一點,請確保您的RDS有一個安全組,允許從配置了EBS的EC2進行連接。