0

モデルストレージとしてOSGi環境でdb4o6.4.54を使用しています。OSGiフレームワークを再起動するたびに、データベースは空のように見えますが、ファイルはそこにあり、完全に空ではありません。

私は次の構成を持っています:

コアバンドル。db4oが提供する標準のdb4o_osgiバンドルに依存します。モデルを取得する場所からコアプラグインに依存するUIバンドル。

コアバンドルは、openServer(String、0)メソッドを介してメモリ内サーバーを作成し、要求/スレッドごとに個別のクライアントを作成します。

問題は、db4oサーバーが作成されるたびに、クエリが結果を返さないことです。

サービスを利用しようとしましたが、うまくいきませんでした。

私のテストの次のステップは、db4oをバンドルに直接含めることでしたが、それは機能しました(その結果、db4oクラスは、データベースに保存したモデルオブジェクトと同じクラスローダーによってロードされました)。db4oフォーラム[1]に1つの投稿がありますが、この問題が存在する理由と、それを(正しく)解決する方法を説明できていません。私は調査を続けますが、他の誰かが私の前にこの問題に取り組んでいるのではないかと思います。

4

1 に答える 1

1

変更をコミットし、osgi バンドルのシャットダウン時にクライアント接続を閉じましたか?

例: sth like

ObjectContainer client;

public void start(BundleContext context) throws Exception {
   client = Db4oClientServer.openClient(...);
}    

public void stop(BundleContext context) throws Exception {
   if (!client.ext().isClosed())
      client.close();
}

または、クライアントから停止するメッセージ「STOP」を受信できるスタンドアロンの Db4oServerを調べます。

于 2010-01-20T23:09:31.107 に答える