2008. április 4., péntek

Troubleshooting JSF pages

Anyone who has tried JavaServer Faces development using the Sun Reference Implementation knows that trouble shooting can be a real pain. Many times rendering simply stops at a given point in the page, without any exception or error message. Here are some tips to get you started in troubleshooting your application.
  • Keep in mind that any changes you make to faces-config.xml will take effect only if you restart(redeploy) your application.
  • Check out the HTML generated. If you see that tags are not closed, or some tags are completely missing, try to remove some of the JSF code to see exactly which part causes the problem.
  • Increase the JSF loglevel. This depends on the particular JSF implementation. If you are using the Sun RI, the following packages need to get their loglevel increased to level "FINE":

    com.sun.faces.application
    com.sun.faces.el
    com.sun.faces.lifecycle
    
    How you are doing this depends on the environment you are workin in. If you are using the Glassfish application server, go the the admin console, then "Application server", "Logging", "Loglevels". However, you can also set the loglevel of these packages programmatically, using Logger.getLogger(..).setLevel(..). If you are successful with either of these methods, you should see log messages like this:

    parse(jndi:/server/TrainingLog-war/WEB-INF/faces-config.xml)
    added converter of type 'javax.faces.Long' and class 'javax.faces.convert.LongConverter'
    added converter of class type 'javax.faces.convert.LongConverter'
    added converter of type 'javax.faces.Short' and class 'javax.faces.convert.ShortConverter'
    added converter of class type 'javax.faces.convert.ShortConverter'
    Unknown entity, deferring to superclass.
    Unknown entity, deferring to superclass.
    added converter of class type 'javax.faces.convert.BigDecimalConverter'
    addManagedBean(SessionBean1)
    addManagedBean(Login)
    addManagedBean(ApplicationBean1)
    addManagedBean(RequestBean1)
    addManagedBean(ViewMyUsers)
    addManagedBean(ViewMyTrainings)
    addManagedBean(ViewMyParts)
    addNavigationRule(/ViewMyUsers.jsp)
    addNavigationRule(/Login.jsp)
    addManagedBean(init)
    addNavigationRule(/init.jsp)
    Created Default Lifecycle
    Defined editorClass class com.sun.faces.application.ConverterPropertyEditorFor_java_math_BigInteger
    added converter of class type 'javax.faces.convert.BigIntegerConverter'
    added converter of type 'javax.faces.BigDecimal' and class 'javax.faces.convert.BigDecimalConverter'
    added converter of type 'javax.faces.BigInteger' and class 'javax.faces.convert.BigIntegerConverter'
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@b69761
    addedLifecycle: com.sun.faces.lifecycle.PARTIAL com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle@4e3bb0
    getLifecycle: com.sun.faces.lifecycle.PARTIAL com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle@4e3bb0
    addPhaseListener(ANY 0,com.sun.faces.lifecycle.ELResolverInitPhaseListener@15a4e36
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@b69761
    addPhaseListener(ANY 0,com.sun.faces.lifecycle.ELResolverInitPhaseListener@177dde7
    added converter of type 'javax.faces.Boolean' and class 'javax.faces.convert.BooleanConverter'
    Created ApplicationFactory
    JSF1032: Resource injection ENABLED using InjectionProvider 'com.sun.faces.vendor.GlassFishInjectionProvider'.
    Created Application instance
    added converter of type 'javax.faces.Byte' and class 'javax.faces.convert.ByteConverter'
    Created Application instance 'com.sun.faces.application.ApplicationImpl@191b687'
    "JSF1016: Target class 'com.sun.faces.application.ActionListenerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    set ActionListener Instance to 'com.sun.faces.application.ActionListenerImpl'
    set ActionListener Instance to 'com.sun.rave.web.ui.appbase.faces.ActionListenerImpl'
    "JSF1016: Target class 'com.sun.faces.application.NavigationHandlerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    Created NavigationHandler instance
    set NavigationHandler Instance to 'com.sun.faces.application.NavigationHandlerImpl'
    added converter of type 'javax.faces.Character' and class 'javax.faces.convert.CharacterConverter'
    added converter of type 'javax.faces.DateTime' and class 'javax.faces.convert.DateTimeConverter'
    added converter of type 'javax.faces.Double' and class 'javax.faces.convert.DoubleConverter'
    added converter of type 'javax.faces.Float' and class 'javax.faces.convert.FloatConverter'
    added converter of type 'javax.faces.Integer' and class 'javax.faces.convert.IntegerConverter'
    "JSF1016: Target class 'com.sun.webui.jsf.faces.DataProviderELResolver' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    added converter of type 'javax.faces.Long' and class 'javax.faces.convert.LongConverter'
    added converter of type 'javax.faces.Number' and class 'javax.faces.convert.NumberConverter'
    "JSF1016: Target class 'com.sun.webui.jsf.faces.ThemeELResolver' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    "JSF1016: Target class 'com.sun.faces.application.StateManagerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    set StateManager Instance to 'com.sun.faces.application.StateManagerImpl'
    added converter of type 'javax.faces.Short' and class 'javax.faces.convert.ShortConverter'
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@e76ee6 for CurrentUser
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@137f1 for LoginPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@bb1db8 for MenuBean
    set StateManager Instance to 'com.sun.faces.extensions.avatar.application.DeferredStateManager'
    "JSF1016: Target class 'com.sun.faces.application.ViewHandlerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    Created ViewHandler instance
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@11c61fe for RegisterPageBean
    set ViewHandler Instance to 'com.sun.faces.application.ViewHandlerImpl'
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@baad4f for TransferListPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@b9f79a for TransferPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@149d4d for UserManagementPageBean
    set ViewHandler Instance to 'com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl'
    added component of type 'com.sun.faces.AjaxZone' and class 'com.sun.faces.extensions.avatar.components.AjaxZone'
    added component of type 'com.sun.faces.extensions.avatar.Scripts' and class 'com.sun.faces.extensions.avatar.components.ScriptsComponent'
    added component of type 'com.sun.rave.faces.Encoding' and class 'com.sun.rave.faces.component.EncodingComponent'

    <some stuff snipped>

    added component of type 'javax.faces.ViewRoot' and class 'com.sun.faces.extensions.avatar.components.PartialTraversalViewRootImpl'
    added converter of type 'javax.faces.Boolean' and class 'javax.faces.convert.BooleanConverter'

    <some stuff snipped>
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@13fe739 for ApplicationBean1
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@13e8c11 for Login
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@9e637e for RequestBean1
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@1986321 for SessionBean1
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@10f546e for ViewMyParts
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@622bff for ViewMyTrainings
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@b3ca83 for ViewMyUsers
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@15c46da for init
    Using client state buffer size of 4096
    added validator of type 'javax.faces.DoubleRange' class 'javax.faces.validator.DoubleRangeValidator'
    added validator of type 'javax.faces.Length' class 'javax.faces.validator.LengthValidator'
    added validator of type 'javax.faces.LongRange' class 'javax.faces.validator.LongRangeValidator'
    Completed initializing Sun's JavaServer Faces implementation (1.2_04-b20-p03) for context '/TrainingLog-war'
    getLifecycle: com.sun.faces.lifecycle.PARTIAL com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle@4e3bb0
    SMGT0007: Self Management Rules service is enabled
    Application server startup complete.
    contextDestroyed()
    CORE5022: All ejb(s) of [Micropayment-JSF] were unloaded successfully!
    TopLink, version: Oracle TopLink Essentials - 2.0 (Build b58g-fcs (09/07/2007))
    Server: unknown
    file:/home/surfk/sun/Micropayment-JSF/dist/gfdeploy/Micropayment-JSF-ejb_jar/-Micropayment-JSF-ejbPU login successful
    file:/home/surfk/sun/Micropayment-JSF/dist/gfdeploy/Micropayment-JSF-ejb_jar/-Micropayment-JSF-ejbPU logout successful
    JDO76609: Got SQLException executing statement "CREATE TABLE USERS (ID BIGINT NOT NULL, PASSWORD VARCHAR(50), BALANCE FLOAT, REALNAME VARCHAR(255), USERROLE INTEGER, LOGIN VARCHAR(50), PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'USERS' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "CREATE TABLE TRANSFER (ID BIGINT NOT NULL, TRANSFERTIME TIMESTAMP, AMOUNT FLOAT, SENDER_ID BIGINT, RECIPIENT_ID BIGINT, PRIMARY KEY (ID))": java.sql.SQLException: Table/View 'TRANSFER' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "ALTER TABLE TRANSFER ADD CONSTRAINT TRANSFERRCIPIENTID FOREIGN KEY (RECIPIENT_ID) REFERENCES USERS (ID)": java.sql.SQLException: Constraint 'TRANSFERRCIPIENTID' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "ALTER TABLE TRANSFER ADD CONSTRAINT TRANSFER_SENDER_ID FOREIGN KEY (SENDER_ID) REFERENCES USERS (ID)": java.sql.SQLException: Constraint 'TRANSFER_SENDER_ID' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL, PRIMARY KEY (SEQ_NAME))": java.sql.SQLException: Table/View 'SEQUENCE' already exists in Schema 'APP'.
    JDO76609: Got SQLException executing statement "INSERT INTO SEQUENCE(SEQ_NAME, SEQ_COUNT) values ('SEQ_GEN', 1)": java.sql.SQLIntegrityConstraintViolationException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL080109084126840' defined on 'SEQUENCE'.
    deployed with moduleid = Micropayment-JSF
    naming.bind
    POARemoteRefFactory checking if SFSBVersionPolicy need to be added
    EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
    POARemoteRefFactory addSFSBVersionPolicy? false
    POARemoteRefFactory checking if SFSBVersionPolicy need to be added
    EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
    POARemoteRefFactory addSFSBVersionPolicy? false
    **RemoteBusinessJndiName: micropayment.ejb.manager.UserManagerRemote; remoteBusIntf: micropayment.ejb.manager.UserManagerRemote
    naming.bind
    POARemoteRefFactory checking if SFSBVersionPolicy need to be added
    EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
    POARemoteRefFactory addSFSBVersionPolicy? false
    POARemoteRefFactory checking if SFSBVersionPolicy need to be added
    EJBSCLookup:: sc.getEjbContainerAvailabilityEnabledFromConfig() ==> false
    POARemoteRefFactory addSFSBVersionPolicy? false
    **RemoteBusinessJndiName: micropayment.ejb.manager.TransferManagerRemote; remoteBusIntf: micropayment.ejb.manager.TransferManagerRemote
    LDR5010: All ejb(s) of [Micropayment-JSF] loaded successfully!
    JSF1021: [/Micropayment-JSF-war] Configuration option 'com.sun.faces.displayConfiguration' - DISABLED
     <some stuff snipped>
    'com.sun.faces.vendor.GlassFishInjectionProvider'
    JSF1018: [/Micropayment-JSF-war] Configuration option 'com.sun.faces.responseBufferSize' set to '1024'
    JSF1018: [/Micropayment-JSF-war] Configuration option 'com.sun.faces.clientStateWriteBufferSize' set to '8192'
    Initializing Sun's JavaServer Faces implementation (1.2_04-b20-p03) for context '/Micropayment-JSF-war'
    contextInitialized()
    Attempting to configure Digester to perform document validation.
    addRenderer(javax.faces.Command,javax.faces.Button)

     <some stuff snipped>
    parse(jndi:/server/Micropayment-JSF-war/WEB-INF/faces-config.xml)
    Unknown entity, deferring to superclass.
    Unknown entity, deferring to superclass.
    addManagedBean(LoginPageBean)
    addManagedBean(MenuBean)
    addManagedBean(CurrentUser)
    addManagedBean(RegisterPageBean)
    addManagedBean(UserManagementPageBean)
    addManagedBean(TransferPageBean)
    addManagedBean(TransferListPageBean)
    addNavigationRule(*)
    addNavigationRule(/secure/owner/usermanagement.jsp)
    addNavigationRule(/secure/regular/newtransfer.jsp)
    Created Default Lifecycle
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@19081e1
    addPhaseListener(ANY 0,com.sun.faces.lifecycle.ELResolverInitPhaseListener@184d505
    Created ApplicationFactory
    JSF1032: Resource injection ENABLED using InjectionProvider 'com.sun.faces.vendor.GlassFishInjectionProvider'.
    Created Application instance
    Created Application instance 'com.sun.faces.application.ApplicationImpl@a1ea7d'
    "JSF1016: Target class 'com.sun.faces.application.ActionListenerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    set ActionListener Instance to 'com.sun.faces.application.ActionListenerImpl'
    "JSF1016: Target class 'com.sun.faces.application.NavigationHandlerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    Created NavigationHandler instance
    set NavigationHandler Instance to 'com.sun.faces.application.NavigationHandlerImpl'
    "JSF1016: Target class 'com.sun.faces.application.StateManagerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    set StateManager Instance to 'com.sun.faces.application.StateManagerImpl'
    "JSF1016: Target class 'com.sun.faces.application.ViewHandlerImpl' doesnt have an adapter constructor to accept '{1}', creating a new instance instead.
    Created ViewHandler instance
    set ViewHandler Instance to 'com.sun.faces.application.ViewHandlerImpl'
    added component of type 'javax.faces.Column' and class 'javax.faces.component.UIColumn'

     <some stuff snipped>

    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@17e1e5c for CurrentUser
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@3e6a94 for LoginPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@2146b2 for MenuBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@1bde842 for RegisterPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@19c30aa for TransferListPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@1988946 for TransferPageBean
    Added managedBeanFactory com.sun.faces.config.ManagedBeanFactoryImpl@1794a2d for UserManagementPageBean
    Using client state buffer size of 4096
    added validator of type 'javax.faces.DoubleRange' class 'javax.faces.validator.DoubleRangeValidator'
    added validator of type 'javax.faces.Length' class 'javax.faces.validator.LengthValidator'
    added validator of type 'javax.faces.LongRange' class 'javax.faces.validator.LongRangeValidator'
    Completed initializing Sun's JavaServer Faces implementation (1.2_04-b20-p03) for context '/Micropayment-JSF-war'
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@19081e1
    execute(com.sun.faces.context.FacesContextImpl@13cbbb1)
    phase(RESTORE_VIEW 1,com.sun.faces.context.FacesContextImpl@13cbbb1)
    JSF1028: [/Micropayment-JSF-war] The ELResolvers for JSF successfully registered with the JSP container.
    Entering RestoreViewPhase
    New request: creating a view for /login.jsp
    Created component with component type of 'javax.faces.ViewRoot'
    servletPath /faces
    pathInfo /login.jsp
    URL pattern of the FacesServlet executing the current request /faces
    Created new view for /login.jsp
    Locale for this view as determined by calculateLocale en_US
    RenderKitId for this view as determined by calculateRenderKitId HTML_BASIC
    Exiting RestoreViewPhase
    TIMING: Exectution time for phase 'RESTORE_VIEW 1': 72
    getLifecycle: DEFAULT com.sun.faces.lifecycle.LifecycleImpl@19081e1
    removePhaseListener(ANY 0,com.sun.faces.lifecycle.ELResolverInitPhaseListener@184d505
    Skipping rest of execute() because of a reload
    render(com.sun.faces.context.FacesContextImpl@13cbbb1)
    phase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@13cbbb1)
    Entering RenderResponsePhase
    About to render view /login.jsp
    About to execute view /login.jsp
    Before dispacthMessage to viewId /login.jsp
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.NamingContainer'
    Created component with component type of 'javax.faces.HtmlForm'
    Created bean MenuBean successfully
    Created component with component type of 'javax.faces.HtmlDataTable'
    Created component with component type of 'javax.faces.Column'
    Created component with component type of 'javax.faces.HtmlCommandLink'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlForm'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlInputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlInputSecret'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlMessages'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlCommandButton'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    After dispacthMessage to viewId /login.jsp
    Completed building view for :
    /login.jsp
    About to render view /login.jsp
    component.getValue() returned
                <table>
                    <tr>
                        <td id="menucolumn">
                            
    Value to be rendered
                <table>
                    <tr>
                        <td id="menucolumn">
                            
    <some HTML output snipped>
           
    Begin creating serialized view for /login.jsp
    End creating serialized view /login.jsp
    Client State: total number of characters written: 2108
    Exiting RenderResponsePhase
    TIMING: Exectution time for phase 'RENDER_RESPONSE 6': 1489
    execute(com.sun.faces.context.FacesContextImpl@1914c67)
    phase(RESTORE_VIEW 1,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering RestoreViewPhase
    servletPath /faces
    pathInfo /login.jsp
    URL pattern of the FacesServlet executing the current request /faces
    Created bean MenuBean successfully
    Postback: Restored view for /login.jsp
    Exiting RestoreViewPhase
    TIMING: Exectution time for phase 'RESTORE_VIEW 1': 27
    phase(APPLY_REQUEST_VALUES 2,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering ApplyRequestValuesPhase
    Set submitted value erger on component
    new value after decodingerger
    Set submitted value erg on component
    new value after decodingerg
    No decoding necessary since the component j_id_id49 is not an instance or a sub class of UIInput
    This command resulted in form submission  ActionEvent queued javax.faces.event.ActionEvent[ source=javax.faces.component.html.HtmlCommandButton@1d6fc09]
    Exiting ApplyRequestValuesPhase
    TIMING: Exectution time for phase 'APPLY_REQUEST_VALUES 2': 12
    phase(PROCESS_VALIDATIONS 3,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering ProcessValidationsPhase
    Created bean LoginPageBean successfully
    No conversion necessary for ergerand converterType class java.lang.String while decoding component j_id_id35
    No conversion necessary for ergand converterType class java.lang.String while decoding component j_id_id43
    Exiting ProcessValidationsPhase
    TIMING: Exectution time for phase 'PROCESS_VALIDATIONS 3': 18
    phase(UPDATE_MODEL_VALUES 4,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering UpdateModelValuesPhase
    TIMING: Exectution time for phase 'UPDATE_MODEL_VALUES 4': 2
    phase(INVOKE_APPLICATION 5,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering InvokeApplicationsPhase
    processAction(j_id_id54)
    TopLink, version: Oracle TopLink Essentials - 2.0 (Build b58g-fcs (09/07/2007))
    Server: unknown
    file:/home/surfk/sun/Micropayment-JSF/dist/gfdeploy/Micropayment-JSF-ejb_jar/-Micropayment-JSF-ejbPU login successful
    Adding Message[sourceId=<<NONE>>,summary=Bad username or password)
    "JSF1013: Unable to find matching navigation case from view ID '/login.jsp' for outcome '' and action '#{LoginPageBean.loginAction}'
    Exiting InvokeApplicationsPhase
    TIMING: Exectution time for phase 'INVOKE_APPLICATION 5': 9512
    render(com.sun.faces.context.FacesContextImpl@1914c67)
    phase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@1914c67)
    Entering RenderResponsePhase
    About to render view /login.jsp
    About to execute view /login.jsp
    Before dispacthMessage to viewId /login.jsp
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    Created component with component type of 'javax.faces.HtmlOutputText'
    After dispacthMessage to viewId /login.jsp
    Completed building view for :
    /login.jsp
    About to render view /login.jsp
    component.getValue() returned
                <table>
                    <tr>
                        <td id="menucolumn">
                            
    Value to be rendered
                <table>
                    <tr>
                        <td id="menucolumn">

    <some HTML output snipped>
           
    Begin creating serialized view for /login.jsp
    End creating serialized view /login.jsp
    Client State: total number of characters written: 2112
    Exiting RenderResponsePhase
    TIMING: Exectution time for phase 'RENDER_RESPONSE 6': 101
  • If you think that the problem you are having is somehow connected to the JSF lifecycle (eg. you are developing custom components, etc.), you can also write a custom debugger class based the on the PhaseListener interface. This is nicely detailed here.
  • Study the JSF framework in detail. If you happen to be Hungarian, you can read the book I've co-authored: Software development on the Java EE platform.
Happy coding!