0

私はspring3をhibernate3で、jsf2をprimefacesで使用しています..

データベースからデータをロードしようとすると問題が発生します。セッション ファクトリが null であるため、null ポインタ例外が発生します。

私は問題がから来ていると思います:

viewscoped で managedBean を作成すると、「シリアル化できない例外」が発生するため、すべてのクラス メンバーにシリアル化を実装させますが、シリアル化できない例外も発生しますが、このクラスでは「org.springframework.orm.hibernate3.LocalSessionFactoryBean」、だから私はセッションファクトリを一時的にしました。

セッション ファクトリをトランジェントにした後、アプリケーションは正常に動作しますが、ajax リクエストを行った場合、セッション ファクトリが null なので、null ポインタ例外が発生します !!!

どんな助けでも大歓迎です..

前もって感謝します

4

1 に答える 1

0

実際には新しいセッション ファクトリを作成しない

あなたは春を使用しているので、参照ツリーは何かでなければなりません

ManagedBean -> Spring サービス -> Spring リポジトリ

マネージド Bean には、サービス レイヤー (Singleton) への参照が必要です。この参照は、一時的なものとしてマークし、メソッド フックのアプリケーション コンテキストからフェッチする必要があります。

サービス Bean は常にコンテキストから利用可能であり、インスタンスを再作成する必要はありません。コンテキストから選択するだけです。

休止状態に関しては、リポジトリ層にある必要があり、サービス層をシリアル化から保護しているため、リポジトリはシリアル化されないため、上記のように問題はありません。

@ViewScoped
public class ManagedBean implements Serializable {

  @Autowired private transient Service service;

}

@Service
public class ServiceImpl implements Service{

 @Autowired private Repository repository;

}

@Repository
public class RepositoryImpl extends HibernateDaoSupport implements Repository {

  //here you can have hibernate session factory injected for dao support
}

お役に立てれば !!!!!

于 2012-07-20T17:31:37.760 に答える