問題タブ [seam-conversation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hibernate - SEAM と Hibernate を理解するのに役立ちますか?
Hibernate で SEAM Framework を使用したいのですが、EJB は使用したくありません。EJB を使用できません。
最初の質問は、EntityManager を使用できますか? またはEntityManagerはEJBの一部ですか?
SEAM コンポーネントで Hibernate を使用するにはどうすればアクセスできますか?
ありがとう、フィリップ
java - SEAM/Hibernate: 会話中にデータベースから変更を取得できません
私はクラスを持っています:
メソッド start() は会話の開始時に呼び出され、属性 bar を初期化します (Bar はエンティティ クラスです)。次に、bar にはエンティティでもある属性 baz があります。
会話中に、他のユーザーがバーに関連する baz オブジェクトを変更することがあります。その後、end() が呼び出されると、bar.getBaz() は古い(変更されていない) バージョンの baz を返し、さらにそれをデータベースに上書きします。
session.flush()、session.merge(bar)、session.merge(bar.getBaz()) を使用して end() メソッドで baz の変更された状態を取得しようとしましたが、何も機能しません。データベースの汚染を回避するにはどうすればよいですか?
seam - ロックを取得せずに、Seam 会話が使用されているかどうかを確認します
Seam アプリには、ブラウザ ウィンドウ/タブでページが開いている限り会話をアクティブに保つポーリング セクションがあり、ユーザーは会話を行わずに複数のオブジェクト インスタンスを同時に操作できます。別のページでビジーである間に、「非アクティブ」ページで有効期限が切れます。
すべて正常に動作しますが、別のスレッド (長時間実行) の進行中にポーリング スレッドがリクエストを送信すると、恐ろしい同時呼び出しの会話例外が時々発生します。私たちは、concurrent-request-timeout の値をかなり高く (20 秒) に設定しており、ほとんどの場合、ページは 2 秒未満で戻ってきます。ただし、ユーザーが大量のデータを処理する場合 (そして、どれだけ時間がかかっても、それらのページがロードされるのを喜んで待つ場合) があるため、一般的な最適化に関して私たちができることはあまりありません。
私たちが探しているのは、特定の会話にロックがあるかどうかを (すべての要求が通過する中央フィルターで) 取得しようとせずに (ロックがある場合に例外をトリガーしないようにするため) チェックする方法です。それはすでに)。これらのバックグラウンド スレッドのいずれかを処理しているかどうかを区別する手段があります (セッション管理のためにこれを行っているため、会話は拡張されますが、セッション全体は拡張されません)。会話が既に使用されていることを確認できた場合は、その特定の時点ではそのサービスが必要ないため、このポーリング スレッドの処理をスキップできます (会話は使用されているため、期限切れの危険はありません)。
TLDR: Seam 会話にアクセスしようとせずにロックがあるかどうかを確認します (会話例外への同時呼び出しのトリガーにつながる可能性があります)。
任意のポインタ、提案をいただければ幸いです。
seam2 - EJB @Stateless + Seam @Scope(ScopeType.CONVERSATION) = @Stateful?
私は新しい SEAM 開発者であり、プラットフォームを本当に楽しんでいることは間違いありません。
ステートレス セッション Bean と会話スコープのセマンティックがステートフル セッション Bean と同じかどうか疑問に思っていますか?
このコンテキストでの EJB クライアントは継ぎ目ですよね?そのため、会話スコープを使用すると、クライアント ( seam コンポーネント ) が使用する ejb Bean は会話中に同じになります。このようにして、会話が終了するまで状態が保持されます。
それが正しいか ?
java - @ConversationScoped Bean に対して @PostConstruct が複数回呼び出されました
@ConversationScoped Bean があり、次のように開始メソッドがあります。
私の問題は、ページが更新されるたびに新しい会話が開始され、Bean 内のメソッドへの AJAX 呼び出しがあるたびに新しい会話も開始されることです (これが私の主な問題です)。
私が本当にやりたいことは、手動で conversation.end() を呼び出すまで、sam 会話がぶらぶらすることです。ここで何が欠けていますか?
seam-conversation - Seam会話ID(cid)が順番に進まない理由
シーム会話に問題があります。
URLバー(http://myprojectname/login.xhtml?cid=1)に表示される場合、会話IDが順番に機能することを知っています。しかし、私のプログラムでは、最初に会話を開始し、cidは1(http://myprojectname/login.xhtml?cid = 1)で、次にネスト会話を開始し、cidは4(http://myprojectname/register.xhtml?cid)になります。 = 4)。なぜそれが起こるのですか?
成功したプログラムでは、cidは1で、その後cidは2になり、新しいネストされた会話の場合は3、4になります。しかし、なぜ会話IDが1になり、次に4になるのか疑問に思います。
説明してください。
jsf - CDI / Weld-会話終了後のブラウザページの更新を処理する方法は?
CDIを使用したごく初期の頃は、faces-redirect = trueを使用して、長時間実行されている会話がアクティブになっているページに移動しているため、.. myPage.xhtml?cid=1のようなURLがあります。
ある時点で私は会話を終了します。つまり、これは合理的なことである必要があります。そうでない場合は、セッションスコープを使用する方がよいでしょうか。とにかく、会話を終了してからユーザーがF5キーを押すと、もちろん、cid = 1が存在しないため、「会話が見つかりません」というエラーが発生します。
誰かがこの問題を回避する方法を提案できますか?私はStevenVerborghViewScoped実装を使用しており、単に会話スコープのBeanを使用してページ間でパラメーターを渡します。たとえば、2つの@ViewScoped Beanがあり、それぞれが1ページと2ページにあります。@ConversationScopedParameterBeanを両方のビュースコープのBeanに@Injectします。1ページから呼び出されたアクションメソッドで会話(parameterBean.getConversation()。begin())を開始します。2ページのpreRenderViewイベントで、parameterBeanのプロパティへの参照を2ページのバッキングBeanインスタンス変数に取り込みます。会話を終了します。それは仕事であり、もはや必要ありません。
F5の問題を除いて、正常に動作します。誰かが何か提案があれば、私はそれを感謝します、うまくいけば、私は本当に明白な何かを見逃していないでしょう。リダイレクトから逃れることはできないと思います。
ありがとう。
java - JSF ConversationScoped Bean が POST 間でスコープを昇格させない
view() というアクション メソッドと MyObject 型のフィールドを持つ Bean があります。
screen1.xhtml では、primefaces p:dataTable を var="obj" で使用して、commandButton で行を出力し、ユーザーがクリックした行のオブジェクトを表示しています。各行のボタンは次のようになります。
ユーザーがいずれかの行の commandButton をクリックすると、page2.xhtml に移動し、obj に関する詳細情報が表示されます。これは正しく機能し、詳細が表示されます。view(MyObject selectedObj) アクション メソッド内にいるとき、すぐに conversation.begin() を呼び出し、this.obj = selectedObj を割り当て、ユーザーが page2.xhtml を取得します。
ただし、ユーザーが page2 の commandButton をクリックすると、スコープが会話に昇格されたため、page1 から来たときに発生した view() アクション呼び出しから割り当てられた obj とは異なる情報で再表示されます。これは起こっていません。Bean の obj フィールドは、スコープによって失われないようにする必要がある場合に、null になります。そのため、ページ 2 で commandButton をクリックすると、ページが #{myBean.someProperty} を解決しようとすると、null ポインター例外が発生します。
私は何が欠けていますか?助けてくれてありがとう。
javascript - ユーザーがページを離れたときに Seam での会話を終了する
ユーザーがページを離れたときに Seam 2 で会話を終了する方法はありますか? もちろん、ナビゲーション ルールで会話を終了できることはわかっていますが (この投稿を参照)、ユーザーがブラウザーのアドレス バーに URL を入力したときに会話を終了したいと考えています。
これは Javascript を介して (たとえば onbeforeunload を使用して) 達成できますか? しかし、JavaScript を介して会話を停止するにはどうすればよいでしょうか。
jsf - JSF 2 ConversationScope はどのように機能しますか?
表示しているページに応じてデータのテーブルを表示する JSF facelets ページがあります。ページ 1 を表示するときに、view()
アクション メソッドを呼び出してデータベースから両方のページのデータを取得し、Bean のプライベート メンバー フィールド (2 つの配列) として格納します。conversation.start()
また、メソッドに挿入された会話インスタンスを呼び出しますview()
。
ユーザーが「次へ」ボタン ( h:commandButton
) をクリックしてページ 2 に移動するとnext()
、配列 2 を指すようにバッキング Bean を更新するメソッドを実行して、その内容を出力します。問題は、配列 2 が存在しないことです。会話の範囲を失っている理由がわかりません。何か案は?