したがって、問題は非常に単純です。
JSF 2.0 と Primefaces および EJB を使用してアプリケーションを処理していますが、問題が発生しました。@SessionScoped
すべての Bean を格納する単一の Bean があり@Stateful Session Beans
ます。
あるケースでは (JPA からのいくつかの例外を処理しなかった場合)、例外があります。
javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "webuser_idwebuser_pk"
Detail: Key (idwebuser)=(6) already exists.
それは私たちの 1 つの破壊につながります@Stateful Session Bean
。そのため、Web サイトを更新した後、JSF がまだ正しく機能しているときに、フォームに入力して送信しようとした後、その Bean からメソッドを呼び出して例外が発生します。
javax.ejb.NoSuchObjectLocalException: The EJB does not exist. session-key: 22900a4d007e1f-6dcc714a-0
最も問題なのは、アプリケーションを再起動して再デプロイし、同じコンピューター (または Web ブラウザー) で動作させる必要があることです。これは、JSF の@SessionScoped
Bean が Cookie などによって保持されているためです。
したがって、私が推測する解決策は、それを強制的に破棄する@SessionScoped
か、何らかの方法でセッションを更新することですが、実際にはその方法がわかりません。または、より良いアプローチは何でしょうか。
ありがとう!