使用我的persistence.xml(JPA)部署到Heroku而不使用Spring

时间:2016-07-27 14:16:15

标签: jpa java-ee heroku wildfly persistence.xml

我在使用“git push master heroku”进行应用程序部署时出错,而本地工作正常。 我希望使用我的persistence.xml来访问我的数据库H2(我将使用PostgreSQL),所有这些都与我在WildFly 10上的数据源有关。

除了春天我没有找到任何参考。 (我不能用它)

谢谢!

1 个答案:

答案 0 :(得分:1)

我在Heroku上部署了JavaEE Web应用程序(使用jsf,javabean,ejb,di等)。 Heroku将允许您运行shell脚本以启动应用程序类似于使用main方法或可执行.jar文件的类。不在预先安装的fullstack应用程序服务器上。此外,如果您要在Heroku上运行Java应用程序,您的项目应该是 maven

使其在命令行中运行,您可以在任何小型服务器(例如payara-microwildfly-swarmspring-boot上使用云就绪。它将您的应用和服务器转变为单个可执行jar(Uber JAR)。 tomcat和jetty也有用于构建uberJar的包装器。

我使用payara-micro,非常小的jar可以使用会话复制运行几乎所有JavaEE功能。请点击此链接获取说明payara-micro how to(另请阅读maven部分)。

当你git推送到Heroku(使用heroku cli工具)时,它将自动构建你的项目并从项目根目录中的名为 Procfile 的文件中运行脚本。示例procfile:

web: java -jar target/myapp.jar --port $PORT

从上面的代码段中考虑 $PORT 部分。当Heroku运行时(dyno)启动时,它将打开随机端口(我认为是这样)并绑定到$PORT环境变量。所以我在这里传递那个accessibe端口到payara-micro服务器进行监听。其他提到的服务器应该使用类似的程序。您可以在heroku devcenterr

找到文档

对于JPA和数据库连接,Heroku为connect database提供了JDBC_DATABASE_URLDATABASE_URL个环境变量,这些变量具有连接信息(url等)。我找不到将这些变量挂钩到persistence.xml的方法。但您可以通过编程方式创建和配置EntityManagerFactoryEntityManager

希望它有所帮助。