Openshift Tomcat 7墨盒拒绝Postgres连接 [英] Postgres connection refused from Openshift Tomcat 7 cartridge

查看:89
本文介绍了Openshift Tomcat 7墨盒拒绝Postgres连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在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.

推荐答案

大多数答案都在Openshift中

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆