Oracleデータベース(10g以降、11g)のWeblogic App-Server(10.3.3)でアプリケーションを実行しています。アプリケーションのメモリが正しく管理されていないようです。それは "gcオーバーヘッド限界超過"例外を繰り返しスローし始めます。Oracle Weblogicアプリケーション・サーバーでLOBを遅延フェッチする方法はありますか。
私はjvisualvmで自分のサーバーのプロファイルを作成しました。ほとんどのヒープはバイト配列で構成されていて、これらのバイト配列は自分のメインエンティティの1つと 'data'メンバ(DBのBLOB)として関連付けられています。
私はこのようなもので、そのエンティティを変更しようとしました:
@Basic(fetch=LAZY)
@LOB
public byte[] getData() { return this.data; }
が、その後、私は常にnullを取得します。
LOBを遅延フェッチする方法はありますか?
更新
私は、WebLogicアプリケーション・サーバーに付属のデフォルトのプロバイダを使用しています。私はサーバー上のJPA設定に触れていませんでした。
私のコードは現時点では非常に単純です(サンドボックスのようなもの)、em.find()
(行IDによる)を使って自分のエンティティを見つけただけで、nullを返すmyEntity.getData()
を呼び出します。
この質問の投稿に使用したアカウントとは異なるアカウントでログオンしているため、あなたはコメントできませんでした。私はMODに通知しました。 – dandan78
どのJPAプロバイダを使用していますか? fetch = LAZYにアクセスすると、クエリが発生するはずです。オブジェクトにアクセスする前にオブジェクトを分離/直列化していますか? – James
@James:何らかの理由で私はあなたの答えにコメントを追加できないので、私はここで答えるでしょう:私はWeblogicアプリケーションサーバに付属のデフォルトプロバイダを使用しています。私はサーバー上でJPAの設定に触れていませんでした。私のコードは現時点では非常にシンプルで(サンドボックスの一種)、em.find(行IDに従って)を使ってエンティティを見つけてから、nullを返すmyEntity.getData()を呼び出します。 –