0

単純なjsfライフサイクルリスナーをwebbappに接続しました。

public class LifeCycleListener implements PhaseListener 
{

@Override
public PhaseId getPhaseId() {
    return PhaseId.ANY_PHASE;
}

@Override
public void beforePhase(PhaseEvent event) {
    System.out.println("START PHASE " + event.getPhaseId());
}

@Override
public void afterPhase(PhaseEvent event) {
    System.out.println("END PHASE " + event.getPhaseId());
}

}

ページの1つに、次のような内容があります。

<h:form>
  <h:commandLink id="avdertAddedToMainPage" action="#{topView.showMainPage}">
      Main Page
  </h:commandLink>
</h:form>

ここで、topViewは、faces-configでrequest-scopedとして構成された単純なBeanです。

public class TopView {

public TopView() {
}

public String showAddAdvert()
{
    return "addAdvert";
}

public String showMainPage()
{
    return "itemList";
}

}

上記のリンクをクリックすると、すべてが正常に機能しているように見えますが、LiceCycleListenerの出力によると、ページが読み込まれる前に、すべてのフェーズが2回実行されます(昨日は4回カウントしましたが、スレッドの問題が原因でした)。上。これは正常な動作ですか?これが私のコードにある種のバグを示している場合、どこでそれを探すべきですか?

Glassfish3.0.1でMojarra2.0.2を使用しています

これが今日の試みからの私の出力です。ライフサイクルは2ラウンドしかありませんが、昨日は4ラウンドでした。昨日のログを見ると、複数のスレッドがあることがわかりました。サーバーの実行中にアプリを変更することと関係があると思います。しかし、それでも2ラウンドのライフサイクルが良いことかどうかはわかりません。また、文字エンコードの設定に関する警告はほとんどありませんが、これが重要かどうかはわかりません。

FINE: [Web-Security] Policy Context ID was: Powypadkowe/Powypadkowe
FINE: [Web-Security] hasUserDataPermission perm: (javax.security.jacc.WebUserDataPermission /faces/AdvertAddedCl.xhtml POST)
FINE: [Web-Security] hasUserDataPermission isGranted: true
FINE: [Web-Security] Policy Context ID was: Powypadkowe/Powypadkowe
FINE: [Web-Security] hasResource isGranted: true
FINE: [Web-Security] hasResource perm: (javax.security.jacc.WebResourcePermission /faces/AdvertAddedCl.xhtml POST)
WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /powypadkowe, because request parameters have already been read, or ServletRequest.getReader() has already been called
WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /powypadkowe, because request parameters have already been read, or ServletRequest.getReader() has already been called
INFO: START PHASE RESTORE_VIEW 1
INFO: END PHASE RESTORE_VIEW 1
INFO: START PHASE APPLY_REQUEST_VALUES 2
INFO: END PHASE APPLY_REQUEST_VALUES 2
INFO: START PHASE PROCESS_VALIDATIONS 3
INFO: END PHASE PROCESS_VALIDATIONS 3
INFO: START PHASE UPDATE_MODEL_VALUES 4
INFO: END PHASE UPDATE_MODEL_VALUES 4
INFO: START PHASE INVOKE_APPLICATION 5
INFO: END PHASE INVOKE_APPLICATION 5
INFO: START PHASE RENDER_RESPONSE 6
INFO: ------- some hibernate sql selects -------
INFO: END PHASE RENDER_RESPONSE 6
FINE: SecurityContext: setCurrentSecurityContext method called
FINE: [Web-Security] Policy Context ID was: Powypadkowe/Powypadkowe
FINE: [Web-Security] hasUserDataPermission perm: (javax.security.jacc.WebUserDataPermission /faces/photos/nowy17@mail.pl/Atojest/item_1/1m.jpg GET)
FINE: [Web-Security] hasUserDataPermission isGranted: true
FINE: [Web-Security] Policy Context ID was: Powypadkowe/Powypadkowe
FINE: [Web-Security] hasResource isGranted: true
FINE: [Web-Security] hasResource perm: (javax.security.jacc.WebResourcePermission /faces/photos/nowy17@mail.pl/Atojest/item_1/1m.jpg GET)
WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /powypadkowe, because request parameters have already been read, or ServletRequest.getReader() has already been called
WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /powypadkowe, because request parameters have already been read, or ServletRequest.getReader() has already been called
INFO: START PHASE RESTORE_VIEW 1
INFO: END PHASE RESTORE_VIEW 1
INFO: START PHASE APPLY_REQUEST_VALUES 2
INFO: END PHASE APPLY_REQUEST_VALUES 2
INFO: START PHASE PROCESS_VALIDATIONS 3
INFO: END PHASE PROCESS_VALIDATIONS 3
INFO: START PHASE UPDATE_MODEL_VALUES 4
INFO: END PHASE UPDATE_MODEL_VALUES 4
INFO: START PHASE INVOKE_APPLICATION 5
INFO: END PHASE INVOKE_APPLICATION 5
INFO: START PHASE RENDER_RESPONSE 6
INFO: END PHASE RENDER_RESPONSE 6
FINE: SecurityContext: setCurrentSecurityContext method called

そして昨日のログの断片:

[#|2012-06-04T22:05:49.158+0200|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=30;_ThreadName=Thread-1;|END PHASE UPDATE_MODEL_VALUES 4|#]

[#|2012-06-04T22:05:49.158+0200|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=33;_ThreadName=Thread-1;|START PHASE RESTORE_VIEW 1|#]

[#|2012-06-04T22:05:49.161+0200|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=31;_ThreadName=Thread-1;|START PHASE RENDER_RESPONSE 6|#]

[#|2012-06-04T22:05:49.162+0200|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=33;_ThreadName=Thread-1;|END PHASE RESTORE_VIEW 1|#]

[#|2012-06-04T22:05:49.163+0200|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=33;_ThreadName=Thread-1;|START PHASE APPLY_REQUEST_VALUES 2|#]

[#|2012-06-04T22:05:49.261+0200|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=32;_ThreadName=Thread-1;|START PHASE APPLY_REQUEST_VALUES 2|#]

[#|2012-06-04T22:05:49.261+0200|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=33;_ThreadName=Thread-1;|END PHASE APPLY_REQUEST_VALUES 2|#]
4

1 に答える 1

0

それがどのように機能するかはわかりませんが、実際に何が起こっているかについての私の観察と一致しています

于 2012-06-05T15:37:25.147 に答える