スケーラブルな JSF アプリケーションを作成しようとしています。ビュー ステートをクライアント側に保存したいのですが、CDI 注入属性を持つ ViewScoped ManagedBean に問題があります。
SomeService.java :
@Singleton
public class SomeService {
// ...
}
SomeBean.java
@ManagedBean
@ViewScoped
public class SomeBean implements Serializable {
@Inject
private SomeService someService;
}
残念ながら、グラスフィッシュはシリアライズに失敗しますが、シリアライズsomeService
したくないのですが、再注入します。
someService
逆シリアル化後にアクセスすると NullPointerException になる一時的なものにしようとしました。
何をすればよいでしょうか?
Seam Faces または CODI で CDI ViewScoped を使用できることは承知していますが、ほとんどの依存関係を最小限に抑えたいと考えています。
CDI に @ViewScoped を提供する JEE7 を待つこともできますが、数か月前に JEE7 を使用することはありません。
更新:
私は、それ自体が私の戦争にリンクされているjarにバンドルされた組み込みEJBを使用していたことを追加したかっただけです。NotSerializableException のスタック トレースには、次のメッセージがあります。
com.company.core.service.__EJB31_Generated__SomeService__Intf____Bean__