2016-11-23 5 views
1

RESTful Webサービスを開発中です。私は、JPAとSQLiteデータベースを使用して、Javaでサーバーとクライアントの両方を開発し、ローカルで完全に動作します。クライアントのApplicationクラスを実行するだけで、localhostにリクエストが送信され、応答が完全に取得されます。ヘロクのJAVA RESTfulサーバー:SQLiteデータベースのアップロード/読み取りを許可する

Herokuにサーバーを展開し、必要な.warを作成すると(antを使用しているか、Eclipseから.warをエクスポートしています)、myapp.example/rest/buildingsにルート要素が正常に取得されます。

:私は(ローカルで動作すること)新しい建物を追加するための簡単なPOSTリクエストを実行しよう場合、私は500エラー次取得

<buildings/> 

しかし、:の.war自体に問題がないこと

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

私は問題がそれだと思います質問があるので、それは、SQLiteのデータベースを見つけるために知ることができません。

どのように私は私のサーバーはそれからデータを読み取るために、その後、私への応答を返すことができるようにするために、HerokuのにSQLiteデータベースをアップロードすることができますローカルクライアント?これは何らかの方法で.warパッケージに含める必要がありますか? (私はHerokuがこのRDBMSをサポートしていないと読んだが、SQLiteデータベースは単なるファイルなので、回避策があると聞いた。)

ありがとうございました。質問が明確でない場合は、他のスニペットや他のものにお気軽にお問い合わせください。

答えて

2

Herokuはephemeral filesystemを使用するため、HerokuではSQLiteを使用しません。つまり、sqliteデータベースの変更は24時間ごとに失われます。一時ファイルシステムは、サーバ上の一貫性を保証する(すなわち、スノーフレークサーバを防止する)ために重要である。 SQLiteはまた、それぞれ異なるデータベースを持つため、アプリの拡大を防ぐ(つまり、アプリのインスタンスをさらに実行する)ことを防ぎます。

Herokuは無料のPostgreSQLインスタンスを提供しています。私はこれを使用することをお勧めします。あなたはJDBCドライバとconfigure your app use JDBC_DATABASE_URLを変更する必要がありますが、他にはあまりないでしょう。

サイドノート:記事を編集する前に、あなたがjava.lang.NoSuchMethodErrorというエラーが表示されたようです。これは、おそらくクラスパスのロードが非決定的であるためです。

+0

ありがとうございました!私は正しくヒロクにエコー\ $ JDBC_DATABASE_URLを実行するまでのガイドに従って自分のデータベースを設定します。しかし、私はそれを使用してクエリを実行しようとすると、例えばheroku pg:psql DATABASE_URL、応答は---> DATABASE_URLに接続していて、非常に長い時間がかかります(終了しません)。 – user3319400

+0

argroなしで 'heroku pg:psql'を試しましたか? – codefinger

+0

はい、それはうまくいきませんでした(最初は)しかし、私は問題を解決してプロセス全体をやり直しました。ありがとうございました! – user3319400

関連する問題