Java 从本地GlassFish连接到Heroku PostgreSQL时出现问题
我试图在本地GlassFish服务器中获得JDBC连接池和资源设置,以连接到Heroku PostgreSQL实例 我在Tomcat设置中尝试过它作为一种资源,它工作正常,但在GlassFish中我遇到了一些问题 首先,我不得不将我的Java8版本降级到151,以阻止出现一个错误。现在,当我尝试在我的应用程序中执行查询时,我得到:Java 从本地GlassFish连接到Heroku PostgreSQL时出现问题,java,postgresql,heroku,glassfish,heroku-postgres,Java,Postgresql,Heroku,Glassfish,Heroku Postgres,我试图在本地GlassFish服务器中获得JDBC连接池和资源设置,以连接到Heroku PostgreSQL实例 我在Tomcat设置中尝试过它作为一种资源,它工作正常,但在GlassFish中我遇到了一些问题 首先,我不得不将我的Java8版本降级到151,以阻止出现一个错误。现在,当我尝试在我的应用程序中执行查询时,我得到: java.net.ConnectException:连接被拒绝(连接被拒绝) 我认为这与连接到Heroku PostgreSQL必须使用SSL有关,但我不确定在Gla
java.net.ConnectException:连接被拒绝(连接被拒绝)
我认为这与连接到Heroku PostgreSQL必须使用SSL有关,但我不确定在GlassFish中需要做什么来配置它
有人有这样做的经验吗?经过大量的挠头和谷歌搜索,我终于让它工作起来了。上面的例外是一个转移视线的问题。它抱怨它无法连接到本地Derby数据库,这是GlassFish的默认资源。这意味着问题实际上与找不到我指定的资源有关 以下是在GlassFish 5中实现连接所需的步骤:
- 将JAVA_HOME设置为JDK 1.8.0_151(1.8的任何更新版本都不起作用),GlassFish需要在此版本上运行
- 在Bean类中使用
。这是我找到我的jdbc/postgresql资源(@Resource(mappedName=“jdbc/postgresql”)
,@resource(name=“jdbc/postgresql”)
和@resource(name=“java:comp/env/jdbc/postgresql”)
不起作用的唯一方法@resource(lookup=“java:comp/env/jdbc/postgresql”)
- 连接Url必须是这样的:
(最初我有这个jdbc:postgresql://://?sslmode=require
,它在其他地方为我工作)jdbc:postgresql://://?ssl=true&;sslfactory=org.postgresql.ssl.NonValidatingFactory
生活不应该如此复杂…sslmode=require和ssl=true&;sslfactory=org.postgresql.ssl.NonValidatingFactory与postgresql JDBC驱动程序版本有关。较新版本使用
sslmode
。