2012-05-04 18 views
1

私はCDIの会話に関する問題を追跡しようとしています。アプリケーションを通って1つの経路をとると動作するページがありますが、別のルートを経由すると動作しません。私はそれが何か会話に関係していると信じていますが、私は何が分かりません。カンバセーションIDをインクリメントする要因

作業のワークフローは次のように発生します。

  1. ロードページ
  2. を開き編集ページこの時点で
  3. 、新しい会話を編集してください1
  4. のIDで始まりで、保存したページを保存する
  5. ページAをロードしてページBをロードする
  6. 編集ページを開くB
  7. ID 2で会話が開始されます。この開始時にリフレッシュを押すと、ID 3の会話が開始されます。その他のリフレッシュで会話IDが増加します。
  8. 編集は、それが動作しない作業の流れはこうです成功し

発生します 作業のワークフローは次のように発生します。

  1. ロードページにページAの
  2. クリックしてリンクページBをロードする
  3. 編集ページを開くB
  4. IDが1で会話が開始されます。ページを更新すると、会話IDがSTIであることがわかりますll 1.
  5. ページ上のさまざまなアクションによって、「WELD-000321 ID 1のリストアが見つかりません」という例外がスローされます。

2つのワークフローの違いは、私が2番目の編集ページに入ったときに作業ワークフローで正しく編集することです。私は増分会話IDを取得します。作業中のワークフローではなく、会話IDは常に1ですが、何もできません。私は理解しようとしています

ものがあります:

  1. 私は新しい会話を開始するときに、会話を終了、1のIDとの会話を持っている何かをする場合 - 何だろう、それはIDが可能です? 1(この会話が終了したとき)または2(次の未使用ID)。
  2. 私が見ている会話IDが増えていて、会話が正しく終了していないことはありますか?私が知る限り、私は会話を正しく閉じています。

うまくいけば、これらのうちの1つに対する答えは、何がうまくいかないのかを明らかにするでしょう。任意の入力をありがとう

+0

マインドがコードを投稿していますか?ビューとバック豆? – LightGuard

答えて

0

会話の開始と伝播に問題があるように聞こえるものから聞こえます。ユースケースは、あなたが明言した問題なしには確かに達成可能です。関連するコードをここに掲載することをお勧めします。

私は1のIDとの会話を持っている場合は、私は新しい会話を開始するとき、何かが、その後、 会話を終了します - それはIDがあることを何だのでしょうか? (この会話が終了したとき)または2(次の未使用ID)。

新しいIDを作成する方法は指定されていません。溶接には、以下のん:

public class ConversationIdGenerator implements Callable<String>, Serializable { 

    public static final String CONVERSATION_ID_GENERATOR_ATTRIBUTE_NAME = ConversationIdGenerator.class.getName(); 

    private static final long serialVersionUID = 8489811313900825684L; 

    // The next conversation ID 
    private final AtomicInteger id; 

    /** 
    * Creates a new conversation ID generator 
    */ 
    public ConversationIdGenerator() { 
     this.id = new AtomicInteger(1); 
    } 

    public String call() { 
     int nextId = id.getAndIncrement(); 
     return String.valueOf(nextId); 
    } 

} 

は、私が見てい ことをインクリメント会話IDのしたい適切 に終了されていない会話から離れて何がありますか?私が知る限り、私は会話を正しく閉じています。

いいえ、ここには何もありません。ほとんどの場合、問題はあなたのコードにあります(これは良いニュースです:あなたはそれを変更することができます:-)

関連する問題