【问题标题】:JAVA RESTful server on Heroku: allow the upload/reading of the SQLite databaseHeroku 上的 JAVA RESTful 服务器:允许上传/读取 SQLite 数据库
【发布时间】:2016-11-23 16:43:32
【问题描述】:

我正在开发一个RESTful Web 服务。我使用 JPA 和 SQLite 数据库 在 JAVA 中开发了服务器和客户端,并且在本地运行良好。我只需运行客户端的 Application 类,它将请求发送到 localhost 并以完美的方式获取响应。

但是,当我在Heroku 上部署服务器时,创建所需的 .war(使用 ant 或从 Eclipse 导出 .war),我成功地在 myapp.example/rest/buildings 获得了根元素,所以它表示 .war 本身没有任何问题:

<buildings/>

但是,如果我尝试执行简单的 POST 请求来添加新建筑物(在本地工作),我会收到以下 500 错误:

**HTTP Status 500 - Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException**

我认为问题是它不知道在哪里可以找到SQLite数据库,所以问题是:

我如何将 SQLite 数据库上传到 Heroku,以允许我的服务器从中读取数据,然后将响应返回给我的本地客户端?它必须以某种方式包含在.war 包? (我读到 Heroku 不支持这个 RDBMS,但是我听说有一些变通方法,因为 SQLite 数据库和其他许多数据库一样只是一个文件)。

提前谢谢你,如果问题不清楚,请随时问我其他sn-ps或其他问题!

【问题讨论】:

    标签: java sqlite rest api heroku


    【解决方案1】:

    你不会想在 Heroku 上使用 SQLite,因为 Heroku 使用 ephemeral filesystem。这意味着对您的 sqlite 数据库的更改将每 24 小时丢失一次。临时文件系统很重要,因为它确保了服务器的一致性(即防止雪花服务器)。 SQLite 还会阻止您的应用扩展(即运行您的应用的更多实例),因为它们每个都有不同的数据库。

    Heroku 提供免费的 PostgreSQL 实例,我建议您使用。您需要更改您的 JDBC 驱动程序和 configure your app use JDBC_DATABASE_URL,但可能不需要太多。

    旁注:在您编辑帖子之前,您似乎提到了 java.lang.NoSuchMethodError 错误。这可能是由于非确定性类路径加载造成的。

    【讨论】:

    • 感谢您的回复!我按照 heroku run echo \$JDBC_DATABASE_URL 的指南正确设置了我的数据库。但是,当我尝试使用例如对其运行查询时heroku pg:psql DATABASE_URL,响应是 ---> 连接到 DATABASE_URL 并且需要很长时间(它永远不会完成)。如何创建我的表(或者如何在其中导入我的 sqlite 数据库?非常感谢!
    • 你试过没有参数的heroku pg:psql吗?
    • 是的,但它不起作用(最初)。但是,我修复了重做整个过程的问题。非常感谢!
    猜你喜欢
    • 2011-12-20
    • 2016-09-07
    • 2018-10-08
    • 1970-01-01
    • 2012-09-27
    • 2021-06-18
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    相关资源
    最近更新 更多