File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes JSF and the fly likes JSF 1.2 lifecycle details Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » JSF
Bookmark "JSF 1.2 lifecycle details" Watch "JSF 1.2 lifecycle details" New topic
Author

JSF 1.2 lifecycle details

Nico Rossi
Greenhorn

Joined: Jun 12, 2011
Posts: 16
Hi all, I would like to ask 2 questions on JSF 1.2 lifecycle:

1) All the requests for jsf resources are managed by the FacesServlet whose service method starts the lifecycle for the requested resource. So, for each request:

  • the web container creates a new thread to serve the request
  • the thread calls the service method of the FacesServlet which starts jsf lifecycle
  • the whole lifecylce takes place into the thread

  • Is this correct?

    2) JSF pages are translated into servlet at a certain point of the lifecycle or not? Talking about the Render Response Phase, the JavaEE 5 tutorial says: "During this phase, the JavaServer Faces implementation delegates authority for rendering the page to the JSP container if the application is using JSP pages ..... the components will render themselves as the JSP container traverses the tags in the page."

    Does it mean that the response is constructed one tag at a time while the jsp container traverses the whole view without the need to translate the page into a servlet and call the resulting jsp_service method (as for standard jsp pages)?

    Thanks a lot for your help,

    Nico
    Tim Holloway
    Saloon Keeper

    Joined: Jun 25, 2001
    Posts: 16020
        
      20

    Actually, the web container doesn't literally create a new thread to serve the request, it obtains a thread from a Thread pool. More efficient than creating a Thread from scratch.

    The thread applies the FacesServet, but only if the incoming URL matches the URL pattern(s) that were mapped in web.xml to be routed to the FacesServet. Just like any other servlet.

    A single thread runs for the entire JSF request/response lifecycle, that is true.

    And no, the JSF pages are not converted into servlets as far as the overall processing is concerned. They are used as templates to build the UIComponent tree that the FacesServlet uses as a reference model in order to run through its lifecycle processing. If you make any assumptions about how JSPs work in JSF based on how ordinary JSPs work, they will bite you. Even in JSF 1.2 I used Facelets, not JSP files as my View Definitions, and the JSP form of View Definition becomes completely obsolete in JSF2.


    Customer surveys are for companies who didn't pay proper attention to begin with.
    Nico Rossi
    Greenhorn

    Joined: Jun 12, 2011
    Posts: 16
    Hi Tim, thanks a lot for your help. Just a quick clarification about the second point:

    "...the JSF pages are not converted into servlets as far as the overall processing is concerned..."

    means that
    jsf pages are not converted into servlets at all
    or that
    jsf pages are translated into servlets at the end of jsf lifecycle

    I'm sorry but I'm still learning English.
    Thanks again,
    Nico
    Tim Holloway
    Saloon Keeper

    Joined: Jun 25, 2001
    Posts: 16020
        
      20

    Well, I made pasta primavera Sunday, stromboli Monday and as soon as I get through the leftovers, I've got a sack of potatoes waiting to become gnocchi, so I guess I should be extra nice to people from Italy this week.

    Whether or not JSF View Definitions are converted into servlets or not is a matter of historical interest only. If they ever were, they no longer are, so no new code should be created with the assumption that the View becomes servlet code. And, since even in JSF1, application programmers were not supposed to treat View Definitions as though they were servlets, it really would be purely an academic exercise to even worry about it.

    View Definitions are templates used by the Controllers to construct Views (web pages) using the Models as reference data. A View Definition should not contain executable code.

    And if you spend much time reading this forum, you will notice that I tend to admonish people who code logic on the View Definitions. Not only does that break the Separation of Concerns that defines the Model/View/Controller architecture, it's a real to debug!
    Nico Rossi
    Greenhorn

    Joined: Jun 12, 2011
    Posts: 16

    Hi Tim, thanks a lot, everything is clear now. The Force is very strong in you. If you plan to visit Italy, let me know.

    Bye.
     
    Consider Paul's rocket mass heater.
     
    subject: JSF 1.2 lifecycle details