从本地GlassFish连接到Heroku PostgreSQL的问题

时间:2018-06-16 21:14:56

标签: java postgresql heroku glassfish heroku-postgres

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

我已经在Tomcat安装程序中尝试了它作为资源,它运行正常,但在GlassFish中我遇到了一些问题。

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

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

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

有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:0)

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

以下是在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")不起作用。)
  • 连接网址必须是这样的:jdbc:postgresql://<host>:<port>/<databse>?sslmode=require(原来我有jdbc:postgresql://<host>:<port>/<databse>?ssl=true&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory这个曾在其他地方为我工作的人。{/ li>

因此,关键点是在资源属性中使用 JDK 1.8.0_151 mappedName ,在连接字符串中使用 sslmode = require

生活不应该这么复杂......