使用 JNDI 查找在 Heroku 部署中配置数据源

Configure datasource in Heroku deployment with JNDI lookup

我目前正在使用 JNDI 查找从 Tomcat 的 context.xml 中为 MySQL 或 PostgreSQL 获取我的数据源。 我的 context.xml 看起来像这样:

<Resource name="jdbc/MyDataSource"
          auth="Container"
          type="javax.sql.DataSource"
          username="user"
          password="pass"
          driverClassName="org.postgresql.Driver"
          url="jdbc:postgresql://servername:5432/database"
          maxActive="20"
          maxIdle="10"
          validationQuery="Select 1"
/>

但是,我的一位客户正在使用 Heroku 进行部署,我想知道如何在那里设置我的数据源以及如何从我的 Java 网络读取它使用 JNDI 查找的应用程序。 在 Heroku 中我使用 heroku-deploy plugin with Tomcat

你可以将context.xml文件传给webapp-runner的--context-xml选项,heroku-deploy会用到。为此,请像这样设置配置变量:

$ heroku config:set WEBAPP_RUNNER_OPTS="--context-xml context.xml"

然后在部署时,包含 context.xml 文件,如下所示:

$ heroku deploy:war --war app.war --includes context.xml

这在Configuring WAR Deployment with the Heroku Toolbelt

中有详细描述