gpt4 book ai didi

java - 基于 Heroku Tomcat 的部署 : context. xml 环境变量

转载 作者:行者123 更新时间:2023-11-28 22:25:41 25 4
gpt4 key购买 nike

我已将 Java Tomat 应用程序部署到 Heroku 平台。我需要一个 JDBC 数据源。所以我通过 maven war 插件在“META-INF”目录中添加了一个“local”context.xml。

Heroku 提供了一个系统环境变量 JDBC_DATABASE_URL,当添加到 context.xml 中时,它应该像下面这样满足我的目的:

<Resource name="jdbc/postgresqldb" auth="Container" type="javax.sql.DataSource"
url="${JDBC_DATABASE_URL}"
driverClassName="org.postgresql.Driver" initialSize="5" maxWait="5000"
maxActive="120" maxIdle="5" validationQuery="select 1"
poolPreparedStatements="true"/>

但是,我无法让它工作,不得不求助于以下方法:

<Resource name="jdbc/postgresqldb" auth="Container" type="javax.sql.DataSource"
username="tzse*********" password="bea7c190************************************************"
url="jdbc:postgresql://ec2-54-163-227-202.compute-1.amazonaws.com:5432/****************?sslmode=require"
driverClassName="org.postgresql.Driver" initialSize="5" maxWait="5000"
maxActive="120" maxIdle="5" validationQuery="select 1"
poolPreparedStatements="true"/>

我基本上是在这里复制和硬编码环境变量。这工作正常,但不可移植且非常丑陋!

任何提示我在哪里出错以及我可以做些什么来纠正它?

在 Heroku 控制台中我可以看到:

2017-08-30T04:38:19.523960+00:00 app[web.1]:2017 年 8 月 30 日上午 4:38:19 org.apache.naming.NamingContext 查找2017-08-30T04:38:19.523961+00:00 app[web.1]: 警告:意外异常解决引用2017-08-30T04:38:19.523981+00:00 app[web.1]: java.sql.SQLException: 无法为连接 URL '${JDBC_DATABASE_URL}' 创建类 'org.postgresql.Driver' 的 JDBC 驱动程序2017-08-30T04:38:19.523983+00:00 应用 [web.1]:在 org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2160)

这是否意味着 context.xml 中对环境变量的引用根本就没有引用环境变量?

最佳答案

有点晚了...但是尽管 context.xml 可能不支持环境变量(例如 $JDBC_DATABASE_URL),但它确实支持 Java 系统属性。可以将 Heroku 的环境变量作为系统属性传递给您的应用程序。

使用 Procfile (这基本上是一个带有前缀的 Java 命令)和 webapp-runner :

web: java -cp "target/dependency/*" $JAVA_OPTS -DDB_URL=$JDBC_DATABASE_URL webapp.runner.launch.Main --enable-naming --port $PORT target/*.war

这里,$JAVA_OPTS$JDBC_DATABASE_URL 都是环境变量,而-DDB_URL 将创建一个系统属性。在 context.xml 中,使用 ${DB_URL}:

<Resource name="jdbc/postgresqldb" url="${DB_URL}" .../>

关于java - 基于 Heroku Tomcat 的部署 : context. xml 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45952212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com