2017-02-27 27 views
0

私は、休止状態のSpring Webアプリケーションを持っています。私は開発をほぼ完了しました。ユーザーが同時に同じページに接続した場合に何が起きるかを調べるためにいくつかのストレステストを実行しています。ストレステストでHibernate Session/EntityManagerが閉じられる

私はこれらのエラーを取得するので、私は私のHibernate設定または/およびコードに間違った何かを行っている必要があります。ここでは

formatedMessage : Session is closed! 
Message : Session is closed! 
Erreur : java.lang.IllegalStateException: EntityManager is closed 
stacktrace : java.lang.IllegalStateException: EntityManager is closed 
    [...] 

formatedMessage : EntityManager is closed 
Message : EntityManager is closed 
SQL Error: 0, SQLState: 55000 
Ce statement a été fermé. 
Erreur : org.hibernate.exception.GenericJDBCException: could not extract ResultSet 
stacktrace : org.hibernate.exception.GenericJDBCException: could not extract ResultSet 
    [...] 
Caused by: org.postgresql.util.PSQLException: Ce statement a été fermé. 

はコードです:

public class Application 
{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "application_seq_gen") 
    @SequenceGenerator(name = "application_seq_gen", sequenceName = "application_id_seq",initialValue = 1, allocationSize = 1) 
    private int id; 

    private String nom; 
    private Boolean autorise; //Autorise la validation automatique de l'application 
    private String domaineFonctionnel; 

    @ElementCollection(fetch=FetchType.EAGER) 
    @CollectionTable(name="applicationMail") 
    @Column(name="mail") 
    private Set<String> listMail; 

    [...] 
} 

public ArrayList<Application> getListApplication() { 

    entityManager = entityManagerFactory.createEntityManager(); 
    Session session = entityManager.unwrap(Session.class); 

    Criteria criteria = session.createCriteria(Application.class); 
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 

    ArrayList<Application> listApplication = new ArrayList<Application>(); 
    listApplication.addAll(criteria.list()); 

    entityManager.close(); 

    return listApplication; 
} 

誰かが問題がここにあるものを知っています?

+1

接続制限のためにあなたのdatabseで接続が切れている可能性がありますか? – Rjiuk

+0

また、なぜEntityManagerFactoryを使用していますか?正当な理由はありますか?そうでない場合は、@ PersistanceContextを使って問題を解決してください。 – Rjiuk

+0

私はあなたの答えをチェックして、私は後で戻ってきます、コメントありがとう;) –

答えて

1

接続制限のためにあなたのdatabseで接続が切れている可能性がありますか?

接続が不足している場合は、データベースでさらに許可するか、終了した接続をすべて終了するかを確認する必要があります。 (あなたがエンティティマネージャとセッションを制御しているので、そうかもしれません)

また、なぜEntityManagerFactoryを使用していますか?正当な理由はありますか?そうでない場合は、@ PersistanceContextを使って問題を解決してください。

@PersistanceContextは、Springが管理するクラスでのみ使用できます。 (ばね構成要素のみによって)。さもなければ、EntityManagerFactoryによってEntityマネージャーを取得する必要があります

関連する問題