我在使用“git push master heroku”进行应用程序部署时出错,而本地工作正常。 我希望使用我的persistence.xml来访问我的数据库H2(我将使用PostgreSQL),所有这些都与我在WildFly 10上的数据源有关。
除了春天我没有找到任何参考。 (我不能用它)
谢谢!
答案 0 :(得分:1)
我在Heroku上部署了JavaEE Web应用程序(使用jsf,javabean,ejb,di等)。 Heroku将允许您运行shell脚本以启动应用程序类似于使用main方法或可执行.jar文件的类。不在预先安装的fullstack应用程序服务器上。此外,如果您要在Heroku上运行Java应用程序,您的项目应该是 maven 。
要使其在命令行中运行,您可以在任何小型服务器(例如payara-micro,wildfly-swarm,spring-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_URL
和DATABASE_URL
个环境变量,这些变量具有连接信息(url等)。我找不到将这些变量挂钩到persistence.xml
的方法。但您可以通过编程方式创建和配置EntityManagerFactory
和EntityManager
。
希望它有所帮助。