从本地 GlassFish 连接到 Heroku PostgreSQL 的问题
Issue connecting to Heroku PostgreSQL from local GlassFish
我正在尝试在本地 GlassFish 服务器中设置 JDBC 连接池和资源以连接到 Heroku PostgreSQL 实例。
我已经在 Tomcat 中尝试将其设置为资源,它工作正常,但在 GlassFish 中我遇到了一些问题。
首先,我不得不将 Java 8 的版本降级到 151,以阻止我遇到的一个错误。现在,当我尝试在我的应用程序中执行查询时,我得到:
java.net.ConnectException: Connection refused (Connection refused)
我认为这与必须使用 SSL 的 Heroku PostgreSQL 连接有关,但我不确定我需要在 GlassFish 中做什么来配置它。
有人有这方面的经验吗?
经过大量的摸索和谷歌搜索,我终于开始工作了。上面的例外是红鲱鱼。它抱怨无法连接到作为 GlassFish 默认资源的本地 Derby 数据库。这意味着问题实际上与无法找到我指定的资源有关。
以下是我在 GlassFish 5 中建立连接所需的步骤:
- 将 JAVA_HOME 设置为 JDK 1.8。0_151(1.8 的任何较新版本都不起作用)GlassFish 需要在此版本上 运行。
- 在您的 Bean class 中使用
@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
在其他地方为我工作)。
所以重点是在资源属性中使用JDK1.8.0_151,mappedName和 sslmode=require 在连接字符串中。
生活不应该这么复杂...
我正在尝试在本地 GlassFish 服务器中设置 JDBC 连接池和资源以连接到 Heroku PostgreSQL 实例。
我已经在 Tomcat 中尝试将其设置为资源,它工作正常,但在 GlassFish 中我遇到了一些问题。
首先,我不得不将 Java 8 的版本降级到 151,以阻止我遇到的一个错误。现在,当我尝试在我的应用程序中执行查询时,我得到:
java.net.ConnectException: Connection refused (Connection refused)
我认为这与必须使用 SSL 的 Heroku PostgreSQL 连接有关,但我不确定我需要在 GlassFish 中做什么来配置它。
有人有这方面的经验吗?
经过大量的摸索和谷歌搜索,我终于开始工作了。上面的例外是红鲱鱼。它抱怨无法连接到作为 GlassFish 默认资源的本地 Derby 数据库。这意味着问题实际上与无法找到我指定的资源有关。
以下是我在 GlassFish 5 中建立连接所需的步骤:
- 将 JAVA_HOME 设置为 JDK 1.8。0_151(1.8 的任何较新版本都不起作用)GlassFish 需要在此版本上 运行。
- 在您的 Bean class 中使用
@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
在其他地方为我工作)。
所以重点是在资源属性中使用JDK1.8.0_151,mappedName和 sslmode=require 在连接字符串中。
生活不应该这么复杂...