Openshift Tomcat 7墨盒拒绝Postgres连接 [英] Postgres connection refused from Openshift Tomcat 7 cartridge
问题描述
我正在尝试在Openshift Tomcat 7(JBoss EWS 2.0)卡盒上部署应用程序,但是我得到了:
I'm trying to deploy an app on an Openshift Tomcat 7 (JBoss EWS 2.0) cartridge, but I'm getting:
org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
这是我的数据源配置:
public class OpenshiftDataConfig {
@Inject private Environment environment;
@Bean
public DataSource dataSource() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDataSourceClassName("org.postgresql.ds.PGSimpleDataSource");
dataSource.setJdbcUrl(String.format("jdbc:%s/%s",
environment.getProperty("OPENSHIFT_POSTGRESQL_DB_URL"),
"dev"));
dataSource.setUsername(environment.getProperty("OPENSHIFT_POSTGRESQL_DB_USERNAME"));
dataSource.setPassword(environment.getProperty("OPENSHIFT_POSTGRESQL_DB_PASSWORD"));
return dataSource;
}
}
在测试过程中,我正在记录JDBC URL,并尝试使用嵌入的用户名/密码来进行尝试:
I'm logging the JDBC URL during testing, and I've tried it with username/password embedded:
jdbc:postgresql://<value of OPENSHIFT_POSTGRESQL_DB_USERNAME>:<value of OPENSHIFT_POSTGRESQL_DB_PASSWORD>@<value of OPENSHIFT_POSTGRESQL_DB_HOST>:<value of OPENSHIFT_POSTGRESQL_DB_PORT>/dev
,不包含(使用略有不同的代码构建):
and without (built with slightly different code):
jdbc:postgresql://<value of OPENSHIFT_POSTGRESQL_DB_HOST>:<value of OPENSHIFT_POSTGRESQL_DB_PORT>/dev
登录到应用程序时,我已经使用psql测试了连接性:
I've tested connectivity using psql while logged into the app:
psql -h $OPENSHIFT_POSTGRESQL_DB_HOST -p $OPENSHIFT_POSTGRESQL_DB_PORT -U $OPENSHIFT_POSTGRESQL_DB_USERNAME
我可以看到我的数据在那里.我还验证了管理员用户是登录角色. pg_hba.conf文件应允许连接:
And I can see my data is there. I've also verified that the admin user is a login role. The pg_hba.conf file should allow the connection:
# Allow all users to connect over the network with valid credentials
host all all 0.0.0.0/0 md5
host all all ::/0 md5
这似乎是两个盒式磁带之间的Openshift防火墙配置问题,因此,我也正在与他们的官方支持联系.
This seems like an issue with Openshift's firewall configuration between the two cartridges, so I'm contacting their official support as well.
推荐答案
Most of the answer was in the Openshift knowledge base: a datasource is provided to Java cartridges like their Tomcat 7 (JBoss EWS 2.0). It's not specified in the article, but it appears to already be pooled using Apache DBCP, so setup is simple:
@Bean
public DataSource dataSource() throws NamingException {
DataSource datasource = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/PostgreSQLDS");
return datasource;
}
这篇关于Openshift Tomcat 7墨盒拒绝Postgres连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!