deploying spring application to cloud foundry. Cloud foundry has postgres service, trying for jdbc connection using java-cfenv library application.properties:
database.url = #{cfJdbcEnv.findJdbcService().getJdbcUrl()}
database.username = #{ cfJdbcEnv.findJdbcService().getUsername() }
database.password = #{ cfJdbcEnv.findJdbcService().getPassword() }
database.driverClassName = #{cfJdbcEnv.findJdbcService().getDriverClassName()}
applicationContext.xml
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="localOverride" value="false" />
<property name="locations">
<list>
<value>classpath:application.properties</value>
<value>classpath:application-${spring.profiles.active}.properties</value>
</list>
</property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${database.driverClassName}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.username}" />
<property name="password" value="${database.password}" />
</bean>
pom.xml
<dependency>
<groupId>io.pivotal.cfenv</groupId>
<artifactId>java-cfenv-boot</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.9</version>
</dependency>
Getting error:
Caused by: java.sql.SQLException: No suitable driver found for postgres://postgres:[email protected]:5432/postgres
2021-03-03T17:35:15.01-0500 [APP/PROC/WEB/0] OUT at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:153) ~[spring-jdbc-4.0.3.RELEASE.jar:4.0.3.RELEASE]
2021-03-03T17:35:15.01-0500 [APP/PROC/WEB/0] OUT at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:144) ~[spring-jdbc-4.0.3.RELEASE.jar:4.0.3.RELEASE]
2021-03-03T17:35:15.01-0500 [APP/PROC/WEB/0] OUT at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:120) ~[spring-jdbc-4.0.3.RELEASE.jar:4.0.3.RELEASE]
2021-03-03T17:35:15.01-0500 [APP/PROC/WEB/0] OUT at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
2021-03-03T17:35:15.01-0500 [APP/PROC/WEB/0] OUT at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
2021-03-03T17:35:15.01-0500 [APP/PROC/WEB/0] OUT at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
2021-03-03T17:35:15.01-0500 [APP/PROC/WEB/0] OUT at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
2021-03-03T17:35:15.01-0500 [APP/PROC/WEB/0] OUT at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1435) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
2021-03-03T17:35:16.00-0500 [APP/PROC/WEB/0] OUT [CONTAINER] org.hibernate.engine.jdbc.spi.SqlExceptionHelper ERROR No suitable driver found for postgres://postgres:7cpdezVdlt@apa-svc-cd1365a3-c6d0-436b-811d-23fc0ec66f0c.apps.apa.comcast.net:5432/postgres
2021-03-03T17:35:16.00-0500 [APP/PROC/WEB/0] OUT [CONTAINER] org.hibernate.engine.jdbc.spi.SqlExceptionHelper WARN SQL Error: 0, SQLState: 08001
DataSource object getting instantiated with below code:
@Bean(name="dataSource")
public DataSource getDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driverClassName);
String url =
cfEnv.findCredentialsByName("portal-db").getHost();
String username = cfEnv.findCredentialsByName("portal-db").getUsername(); String
password = cfEnv.findCredentialsByName("portal-db").getPassword();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl("jdbc:postgresql://"+url+":5432/postgres");
dataSource.setUsername(username);
dataSource.setPassword(password);
}
I am not sure why when reading database.url from application.properties file, I am getting error related to wrong url: postgres://postgres:xxxx:5432/postgres