On Mon, 2006-01-16 at 22:19 -0800, Craig McClanahan wrote:
> 
> 
> On 1/16/06, Duong BaTien <[EMAIL PROTECTED]> wrote:
>         On Mon, 2006-01-16 at 12:27 -0800, Craig McClanahan wrote:
>         > On 1/16/06, Werner Punz <[EMAIL PROTECTED]> wrote:
>         >
>         > [snip]
>         >
>         >         Well from the small project I have done, you
>         basically can 
>         >         take all your
>         >         JSF knowledge with you, Seam is an extension which
>         simplifies
>         >         many
>         >         things in JSF.
>         >
>         > Yep ... like Shale, Seam is a layer of additional
>         functionality built 
>         > on top of JSF, not a separate framework that just happens to
>         coexist
>         > with it.
>         >
>         >
>         >         For instance you do not define any backing beans in
>         xml
>         >         anymore, just a class which you then annotation as
>         session 
>         >         bean etc...
>         >
>         > If you like that idea, but for some reason don't want to buy
>         in to the
>         > whole Seam stack, Shale can do this now as well (in nightly
>         builds)
>         > when you add the shale-tiger.jar library to your
>         project.  See the
>         > overall description of the Shale Tiger extensions[1], and
>         the javadocs
>         > for annotated managed beans[2] for more info.
>         >
>         Wow: shale-tiger and annotated viewController :-) Thanks for
>         your 
>         effort.
> 
> You're very welcome.  I was delighted with how easy that came
> together :-). 
> 
> 
>         I will soon find some time to get back to
>         Shale-MyFaces-Facelets. I want
>         to change our work currently on Shale + MyFaces
>         tilesViewHandler into
>         Shale + MyFaces + Facelets.
> 
> That seems like a very reasonable choice ... although you might want
> to take a look at the Clay part of Shale too. 

Competition and choice are good. :-)
 
>         I have looked at Seam and decided to stick to Jsf standard and
>         Shale to
>         tackle the issues of validation and state management. Here is
>         my reason: 
>         
>         For validation, Seam tries to consolidate standard Jsf user
>         input
>         validation and business validation (besides standard Ejb3 data
>         model
>         constraints) by forcing user to use Hibernate Validation
>         Framework. For
>         state management, Seam creates its own context framework.
>         Using Shale
>         viewController and CoR context, our requestResponse framework
>         is
>         flexible and work out very nicely. Our business validation is
>         basically
>         a ruleFilter (Chain Filter) which is different from standard
>         Jsf 
>         validation.
> 
> I think there is definitely room for an annotation based  validation
> framework, where you could annotate the business rules that you want
> enforced, and also make those rules available for the view tier to
> validate where possible.  Clearly, if you have a different scheme
> already set up, you probably don't need this ... but it's a part of
> Seam I am quite interested in. 
> 
It is good to have experts looking at different ways to make deliverable
technologies a little easier. We always want more :-) Yes, Seam has some
good innovations especially those related to Ejb3 that i hope also
available in Ejb3 RI. Again competition will make things moving and good
for developers using open sources.

> 
>         For state management, i use viewController and actionListener
>         to hook
>         backing beans with its corresponding data table (Seam calls
>         this 
>         bi-directional injection). This can be done with POJO as i am
>         doing now,
>         and later with Ejb3. It is a nice state management at the
>         presentation
>         level. For state management at the enterprise business level,
>         i rather 
>         stick to standards such as Jbi and conversational web services
>         rather
>         than using Seam state management which bypasses user session
>         and try to
>         consolidate both user state management and process state
>         management into 
>         one piece.
>         
>         Question for Craig: What would be the best practice and its
>         use cases to
>         hook backing bean with its corresponding data table? When Jsf
>         or Spring
>         IoC inject a managed bean in with its settings, which phase of
>         the jsf 
>         life cycle the bean is available or the whole bean is
>         available at the
>         point of injection. For example, Shale viewController (a
>         backing bean)
>         associated with a page has its init(), preprocess(), destroy()
>         so you 
>         can have fine control of how data in the database should be
>         interacted
>         with Jsf state management.
> 
> For acquiring resources in general, I find myself most often putting
> the necessary hookup logic in the prerender() method of a view
> controller -- that covers cases like "go do the query that provides
> the data for the table I am about to display" -- with any
> corresponding cleanup logic in the destroy() method.  For example, if
> you're using Hibernate, you could acquire the session in prerender and
> call the query method, storing the result in a property of the
> (request scope) backing bean that the data dtable is bound to.  You'd
> then release the session in the destroy() method.  (Of course, you can
> use any of the general solutions for allocating a Hibernate session in
> a filter so that it's available for the entire request -- but you'll
> still want to actually execute the query in the prerender() method.) 
> 
> For resource injection in general, the JSF managed beans support
> provides basic DI service for you.  It happens when the corresponding
> backing bean is created, which in turn depends on a couple of
> circumstances:
> 
> * For a postback, it happens after Restore View phase (i.e. just
> before the init() method is called).
> 
> * For navigation to a new page, or for an initial request to a JSF
> page where there is no previous
>   state to be restored, it happens before Render Response phase ( i.e.
> just before the prerender()
>   method is called).
> 
> If you need more sophisticated DI injection, it would be ideal if you
> could use all of Spring's facilities for that, *plus* have the
> instantiated bean instance placed in the appropriate scope.  It would
> be nice for Shale to support the jsf-spring project, or equivalent
> functionality, for that purpose.  But it's not there at the moment. 
> 
Thanks. Yes, i re-factor our work to the concept of SCA and use Spring
as a light-weight tool without the new Tuscany framework.

BaTien
DBGROUPS


> 
> Craig
> 
> 

Reply via email to