2016-05-26 7 views
1

現在、Java EEプロジェクトで作業中で、Wildflyサーバーで作業しています。 私は、WildflyサーバーにデプロイされるWebプロジェクトとEJBプロジェクトを持っています。 たとえば、サーバーを実行している間だけユーザーを保存できます。 サーバーのダウンタイム間にデータの永続性はありません。 インターネットで検索しましたが、回答が見つかりませんでした。Wildflyデータの持続性

私のpersistence.xmlは次のようになります。

<persistence-unit name="primary"> 
    <!-- If you are running in a production environment, add a managed 
    data source, this example data source is just for development and testing! --> 
    <!-- The datasource is deployed as WEB-INF/kitchensink-quickstart-ds.xml, you 
    can find it in the source at src/main/webapp/WEB-INF/kitchensink-quickstart-ds.xml --> 
    <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source> 
    <properties> 
    <!-- Properties for Hibernate --> 
    <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
    <property name="hibernate.show_sql" value="false" /> 
    <value="true"/> 
    </properties> 

私はすべての情報を保持したい場合は、私はこのファイルを再設定する必要がありますか?

私はあなたが私を助けることができると思います:)

答えて

4

あなたの問題は

<property name="hibernate.hbm2ddl.auto" value="create-drop" /> 

このラインで毎回wildflyの起動時に、JPAは、空のデータベースを使用して新しいデータベースモデルを作成します。

あなたは、デフォルトではH2のインメモリデータベースとして設定されている「ExampleDS」を使用している

<property name="hibernate.hbm2ddl.auto" value="update" /> 
+0

ありがとうございます:) しかし、動作していないようです:/私は新しいEJBを作成してJPAを組み込み、 はpersistence.xmlを正確にこのように設定しました。 – user3074008

2

にあなたのコードを調整します。したがって、再起動の間にデータを意図的に保持しません(開発/テストに役立ちます)。 wildflyのstandalone/configuration/standalone.xml設定ファイルに移動し、 "datasources"セクションで "ExampleDS"を検索します。それは示す必要があります:

<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url> 

"mem"はメモリ内を意味します。 "mem:test"を任意の書き込みパスに変更することができます。

<connection-url>jdbc:h2:~/test;DB_CLOSE_DELAY=-1</connection-url> 

"test"として保存されたH2ファイルベースのデータベースを(* nixと仮定して)ホームフォルダに使用することができます。

datasources-sectionに追加のデータベース(PostgreSQL、Oracleなど)を定義することもできます。

+0

ありがとうございました。私はそれを知らなかった。最後に私はPostgreSQLをインストールして、すべて正常に動作している;) – user3074008

関連する問題