同じglassfish(3.1最終バージョン)でエンティティBean(JPA 2 / Eclipselink)を返す別のWebアプリケーションからリモートステートレスEJBを呼び出す必要があります。依存関係インジェクション(@EJB)を介してWebアプリケーションでejb参照を取得していますが、エンティティはnullになります。私はそれをグーグルで検索し、それがシリアル化可能な問題である可能性があることを発見しました。どこかでこれを見つけました
TopLinkは、読み込み時にエンティティクラスを変更する(「織り込む」)か、実行時にコレクションアクセスを置き換えて、遅延アクセスまたは変更された関係を検出できるようにします(これがない場合、または実行時にプロキシをサブクラス化または使用することなく、遅延読み込みをサポートする方法はありません)。これは非常に重要なポイントになります:エンティティにアクセスするためにリフレクションを使用するのではなく、そのビジネスメソッドを介してのみ使用する必要があります。織り込まれたエンティティがサーバーでシリアル化され、対応するエンティティが織り込まれていないクライアントで逆シリアル化される場合、値の計算にはクラスフィールドとメソッドが含まれるため、serialVersionUIDは一致しません。
だから私は私のアプリケーションでDTO変換が必要ですか?