【问题标题】:Issue connecting to Heroku PostgreSQL from local GlassFish从本地 GlassFish 连接到 Heroku PostgreSQL 的问题
【发布时间】:2018-11-26 06:08:57
【问题描述】:

我正在尝试在本地 GlassFish 服务器中设置 JDBC 连接池和资源,以连接到 Heroku PostgreSQL 实例。

我已经在 Tomcat 设置中尝试了它作为资源,它工作正常,但在 GlassFish 中我遇到了一些问题。

首先,我不得不将我的 Java 8 版本降级到 151 以阻止我遇到的一个错误。现在,当我尝试在我的应用程序中执行查询时,我得到:

java.net.ConnectException: Connection refused (Connection refused)

我认为这与连接 Heroku PostgreSQL 必须使用 SSL 有关,但我不确定在 GlassFish 中需要做什么来配置它。

有人有这方面的经验吗?

【问题讨论】:

    标签: java postgresql heroku glassfish heroku-postgres


    【解决方案1】:

    经过大量的挠头和谷歌搜索,我终于得到了这个工作。上面的例外是红鲱鱼。它抱怨它无法连接到作为 GlassFish 默认资源的本地 Derby 数据库。这意味着问题实际上与无法找到我指定的资源有关。

    以下是在 GlassFish 5 中获得连接所需的步骤:

    • 将 JAVA_HOME 设置为 JDK 1.8.0_151(任何较新版本的 1.8 都不起作用)GlassFish 需要在此版本上运行。
    • 在您的 Bean 类中使用 @Resource(mappedName = "jdbc/postgresql")。这是我可以让它找到我的 jdbc/postgresql 资源的唯一方法(@Resource(name = "jdbc/postgresql")@Resource(name = "java:comp/env/jdbc/postgresql")@Resource(lookup = "java:comp/env/jdbc/postgresql") 不起作用)。
    • 连接 Url 必须是这样的:jdbc:postgresql://<host>:<port>/<databse>?sslmode=require(最初我有这个jdbc:postgresql://<host>:<port>/<databse>?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory,它在其他地方一直为我工作)。

    所以重点是在资源属性中使用JDK 1.8.0_151ma​​ppedName,在连接字符串中使用sslmode=require

    生活不应该这么复杂……

    【讨论】:

    • sslmode=requiressl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory 的区别与 postgresql JDBC 驱动版本有关。较新的版本使用sslmode
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2012-10-21
    • 2012-03-12
    • 2014-04-06
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多