Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从本地GlassFish连接到Heroku PostgreSQL时出现问题_Java_Postgresql_Heroku_Glassfish_Heroku Postgres - Fatal编程技术网

Java 从本地GlassFish连接到Heroku PostgreSQL时出现问题

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

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

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

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

java.net.ConnectException:连接被拒绝(连接被拒绝)

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


有人有这样做的经验吗?

经过大量的挠头和谷歌搜索,我终于让它工作起来了。上面的例外是一个转移视线的问题。它抱怨它无法连接到本地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”)
    不起作用的唯一方法
  • 连接Url必须是这样的:
    jdbc:postgresql://://?sslmode=require
    (最初我有这个
    jdbc:postgresql://://?ssl=true&;sslfactory=org.postgresql.ssl.NonValidatingFactory
    ,它在其他地方为我工作)
因此,关键点是在资源属性中使用JDK 1.8.0151mappedName,在连接字符串中使用sslmode=require


生活不应该如此复杂…

sslmode=require和ssl=true&;sslfactory=org.postgresql.ssl.NonValidatingFactory与postgresql JDBC驱动程序版本有关。较新版本使用
sslmode