667481 members! Sign up to stay informed.

Sponsored Links


Resources

Enterprise Java
Research Library

Get Java white papers, product information, case studies and webcasts

News News News Messages: 10 Messages: 10 Messages: 10 Printer friendly Printer friendly Printer friendly Post reply Post reply Post reply XML XML XML

Advanced State Management with JBoss Seam

Posted by: Joseph Ottinger on June 22, 2006 DIGG
Ray Hindman, writing from TSSJS Barcelona, has written up Gavin King's presentation on Advanced State Management with JBoss Seam, and represents Gavin as saying "Dependency Injection is like COBOL with Polymorphism." I'm not sure I like the comparison of DI to Object COBOL. :) Here's his writeup:
Advanced State Management with JBoss Seam

"Dependency Injection is like COBOL with Polymorphism"

The main conference room is filled with over a hundred software professionals filling in for Gavin King's presentation "Introduction to Seam." Most of these delegates have a vested interest in the direction of the Java platform and are thrilled to get a glimpse of Gavin's latest contribution to the community.

After working with Hibernate, and understanding the elegance of the EJB 3.0 specification, King is poised to amplify productivity by addressing many of the fundamental issues Java developers face worldwide.

Seam is an application framework that naturally bridges the gap between EJB 3.0 and JSF and introduces several needed enhancements like managed conversations, advanced state management and business process management. Previously, developers had to rely on extremely fragile conventions to manage state across unpredictable browser navigation events.


Actually, very few interesting websites accurately manage state and distinguish actual navigation events like the browser back, next and refresh buttons. To illustrate, imagine walking into a bookstore and hearing the cashier say, please don’t do anything unexpected during the next 45 seconds, or you might be charged twice? Why should the online and personal transactions differ so dramatically?

Seam extends the interaction model to include business process management as a natural and straightforward aspect of the framework. The idea of bi-injection, or bi-directional injection of dependencies, is also very interesting and allows developers to cross validate behavior at runtime. Gavin described bi-injection as "COBOL with Polymorphism" to a round of cautaus laughter.

Gavin’s personality and passion for simplifying the developer’s experience and streamlining specifications to the core is a rare talent in the software industry today. One can only hope his enthusiasm for advancing the Java community becomes contagious.

Threaded replies

·  Advanced State Management with JBoss Seam by Joseph Ottinger on Thu Jun 22 11:59:32 EDT 2006
  ·  Gavin's loosing focus by Vinicius Carvalho on Thu Jun 22 21:50:37 EDT 2006
    ·  Re: focus by Gavin King on Fri Jun 23 11:38:15 EDT 2006
      ·  Re: focus by Joseph Mays on Fri Jun 23 11:50:34 EDT 2006
  ·  Re: Advanced State Management with JBoss Seam by Radu-Adrian Popescu on Fri Jun 23 01:08:53 EDT 2006
  ·  Well, it just works by Paolo Guccione on Fri Jun 23 05:36:17 EDT 2006
    ·  Re: Well, it just works by analog boy on Fri Jun 23 06:48:54 EDT 2006
  ·  Seam is a good idea - attacking DI is not by Joseph Mays on Fri Jun 23 10:48:16 EDT 2006
  ·  Gavin: Question about transaction management Seam by peter veentjer on Mon Jun 26 05:06:43 EDT 2006
    ·  Extra: is same session used? by peter veentjer on Mon Jun 26 05:38:02 EDT 2006
    ·  Re: Gavin: Question about transaction management Seam by Gavin King on Wed Jun 28 10:36:01 EDT 2006
  Message #211976 Post reply Post reply Post reply Go to top Go to top Go to top

Gavin's loosing focus

Posted by: Vinicius Carvalho on June 22, 2006 in response to Message #211938
Hello there! I've been in the last 2 Rio Java Summit where I had the great chance to be at a Gavin's presentation and speak with him. Last year he was talking about EJB 3.0 persistence model, and also about how developers where not happy about the way the things were going on development. I really was very pleased with his presentation.
This year, well... I really think that Seam is a good framework, it does solve many problems, but attacking DI? Well, isn't the way EntityManager is injected a DI approach? I guess this is all because his little battle against Spring folks. Gavin's deserve all respect and atention, but I think his loosing focus here, attacking other great developers and their ideas.

That's just my opinion from what I've seen in his last presentation as well as recent posts and news around the net.

just my 2 cents

  Message #211982 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Advanced State Management with JBoss Seam

Posted by: Radu-Adrian Popescu on June 23, 2006 in response to Message #211938
Is it me or the quoted article really sounds like "wow gavin is sooo smart and beautiful and talented and what a wonderful personality I think I want to f*ck him" ?!

OMG ponies!!!

  Message #212001 Post reply Post reply Post reply Go to top Go to top Go to top

Well, it just works

Posted by: Paolo Guccione on June 23, 2006 in response to Message #211938
IMO, Gavin King is not attacking dependency injection. In fact, he is almost suggesting it is a "silver bullet"". And I agree that Object COBOL is not necessarily a positive example of software evolution.

Anyway, I am currently using Seam for a real project (yes, one with schedules), so I can dare to offer a 3c advice instead of the usual 2c. The framework does work, in spite of some bugs still hanging about here and there, and it is definitely useful to create complex web applications with reduced time and effort.

Just a warning for those who want to try it: there are some issues that are given as hints in the release notes, but are in fact mandatory in my experience. First of all, you must have JBoss EJB 3.0 RC8 installed as a separate plugin. With a plain 4.0.4 GA, I was unable to have the framework behave correctly. Second, you must use the component.xml file to configure components, not property setting.

Once you get around these small nuisances, the beneficial effects are rather similar to those advertised. Which is far less common than it should be in the IT industry....

  Message #212010 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Well, it just works

Posted by: analog boy on June 23, 2006 in response to Message #212001
I think the reference to DI is yet-another-jibe-from-jboss-against-spring. Gavin has made some great contributions to the community, but his attitude towards the spring commutters really stinks. Sure, in Spring1.x there wasn't a huge amount of innovation, companies like ATG had been pushing IoC for a long time before it arrived, but Spring 2.0 *is* really that good.

Its a real shame that the two biggest contributors to the community (Jboss and Spring IMO) can't get on, worse still is that the animosity seems to be unidirectional, Rod and co. don't seem to go out of their way to attack jboss at every opportunity.

Anyway, at least they are both making our lives as developers easier and we can only thank them for that ;)

  Message #212033 Post reply Post reply Post reply Go to top Go to top Go to top

Seam is a good idea - attacking DI is not

Posted by: Joseph Mays on June 23, 2006 in response to Message #211938
This is really getting old. Why can't these guys just focus on discussing the merits of their technologies without putting others down? I mean, constructive comparisons are good for the community, but saying stuff like "Dependency Injection is like COBOL with Polymorphism" is just inflamitory. Gavin's smart, so we pay him attention, but does he have to be such a total a**?

  Message #212039 Post reply Post reply Post reply Go to top Go to top Go to top

Re: focus

Posted by: Gavin King on June 23, 2006 in response to Message #211976
This year, well... I really think that Seam is a good framework, it does solve many problems, but attacking DI?


In the context of my talk, you'll understand that what I'm questioning is so-called "stateless" architectures (so-called, because they are rarely truly stateless in practice, they merely do ad hoc, fragile state management).

If you have an architecture composed completely of stateless components, you probably don't have real objects anywhere (state+behavior, remember). You are probably pulling and pushing the state that really belongs in your objects from the HttpSession and into your objects on every request. So what DI gives you is essentially equivalent to the ability to plug function pointers together (hence "COBOL with polymorphism).

I'm not trying to attack any particular group or project, instead, I'm making a substantive point about almost all current Java architectures (which are usually based on either SLSBs, or Spring), in what I hope is an entertaining way. Apparently I'm successfully keeping you guys entertained ;-)

And, of course, I'm proposing a constructive alternative: stateful, contextual components with -bijection-. You can think of bijection as "dependency injection 2.0" if you like.

Don't try to understand what I mean by reading out-of-context quotes on TSS. Instead, go and look at the Seam examples, and read the documentation :-)

And guess what guys: if it's OK for all the EJB haters to throw FUD and hate at EJB3 at every opportunity, its OK for us EJB3 lovers to turn round and point out where the proposed alternative architectures have their own flaws and limitations. That's fair, surely?

  Message #212042 Post reply Post reply Post reply Go to top Go to top Go to top

Re: focus

Posted by: Joseph Mays on June 23, 2006 in response to Message #212039
Don't try to understand what I mean by reading out-of-context quotes on TSS. Instead, go and look at the Seam examples, and read the documentation :-)

Point taken. I have looked at the Seam docs, and I've downloaded it and played with the examples. I think there are a lot of really great ideas in it, and I'm prototyping some really interesting stuff with it.
And guess what guys: if it's OK for all the EJB haters to throw FUD and hate at EJB3 at every opportunity, its OK for us EJB3 lovers to turn round and point out where the proposed alternative architectures have their own flaws and limitations. That's fair, surely?

That's not okay either. I'm also tired of hearing how terrible EJB 2.1 is and how the only good thing about EJB3 is JPA. Whatever. I've used EJB 2.1 successfully (well, okay, not entity beans), and I really like EJB3, including the session beans.

I think that pointing out differences between technologies is good, I just *wish* it could be done with a little more respect. I mean, come on, we've seen really great ideas coming from JBoss, Google, Spring... Let's discuss and compare these without trashing one another.

Apparently I'm successfully keeping you guys entertained ;-)

Yes, Gavin, you're always entertaining :-)

  Message #212140 Post reply Post reply Post reply Go to top Go to top Go to top

Gavin: Question about transaction management Seam

Posted by: peter veentjer on June 26, 2006 in response to Message #211938
Question for Gavin:

I have been looking at the transaction management in Seam and I have a question.

Seam uses two transactions:
1) the business logic
2) retrieving data for the view

If you use two transaction and don't add any 'offline' concurrency control, the system could be subject to all kinds of isolation issues.

If you add optimistic locking (very easy with hibernate) the system is not subject to lost updates, but it still is subject to isolation issues like phantom reads (it could happen that a different transaction has add a new item while you are between transaction 1 and 2.

What are your thoughts behind these issues? Do you think it is an issue at all?

  Message #212141 Post reply Post reply Post reply Go to top Go to top Go to top

Extra: is same session used?

Posted by: peter veentjer on June 26, 2006 in response to Message #212140
Is the same session used in transaction 1 and transaction 2? If a different session is used, you are also subject to non repeatable reads.

  Message #212392 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Gavin: Question about transaction management Seam

Posted by: Gavin King on June 28, 2006 in response to Message #212140
Question for Gavin:

I have been looking at the transaction management in Seam and I have a question.

Seam uses two transactions:
1) the business logic
2) retrieving data for the view

If you use two transaction and don't add any 'offline' concurrency control, the system could be subject to all kinds of isolation issues.

If you add optimistic locking (very easy with hibernate) the system is not subject to lost updates, but it still is subject to isolation issues like phantom reads (it could happen that a different transaction has add a new item while you are between transaction 1 and 2.

What are your thoughts behind these issues? Do you think it is an issue at all?


As long as you are using the second transaction only for _display_ of data, there are no transaction isolation issues. The actual "transaction" is over - now you are just displaying the current state of the universe (including the results of the transaction) to the user.

:-)

New content on TheServerSide.comNew content on TheServerSide.comNew content on TheServerSide.com

Dependency Injection in Java EE 6 - Part 1

Reza Rahman explores the features of the proposed JSR 299, Contexts and Dependency Injection for Java EE (CDI). When approved, it promises to be a key feature of Java EE 6. (November 2, Article)

SAML: It's Not just for Web services

SAML is an XML-based standard for exchanging authentication and authorization data between security domains. The single most important problem that SAML was created to solve is the Web browser Single Sign-On problem. Many organizations are debating whether to stay with version 1.1 or move to 2.0. This article makes observations about both options. (September 28, Article)

Programming is Also Teaching Your Team

Joe Ottinger takes a look at how people learn, and applies it to the practice of programming. He notes that understanding how people learn is an essential part of working in a programming team. (September 22, Article)

Can Java EE Deliver The Asynchronous Web?

Stephen Maryka gave us an article about the Asynchronous Web and posed a number of questions that get examined like an approach to delivering Asynchronous Web capabilities through extensions to existing Java EE technologies. (July 14, Article)

JSF Flex

JavaServer Faces Flex goal is to provide users capability in creating standard Flex components, part of flexSDK which is open sourced through MPL license, as normal JSF components. This article by Ji Hoon Kim will provide an overview of creating a simple multilingual JSF page consisting of JSF Flex tags. (June 29, Article)

The Rules of SOA - A Road to a Successful SOA Implementation

In this session Jeff explores the key characteristics of successful SOA projects. He covers some of the patterns, and anti-patterns, tool sets, and strategies that he himself learned the hard way. Last, he provides a strategy and blueprint for achieving a high likelihood of success in your SOA project. (June 23, Tech Talk)

Ari Zilka Talks About Terracotta 3.1

Ari Zilka, CTO of Terracotta, Inc., talks about the new features in Terracotta 3.1, announced during JavaOne and available now. (June 15, Tech Talk)

Enterprise Application Integration, and Spring

In this Tech Talk, Josh Long explores an integration challenge using Spring Integration and walks through the implementation, employing and expanding on the basic patterns of Enterprise Application Integration to tie together components into a function integration solution, and then demonstrates how Spring Integration helps address the integration requirements. (June 15, Tech Talk)

Google Web Toolkit: An Introduction

In this Tech Talk, David Geary teaches you: The basics of Google Web Toolkit; How to implement Ajax-enabled applications in Java; Internationalization; Hooking into the browser history mechanism; Remote procedure calls. (June 4, Tech Talk)

Just Enough Early Architecture to Guide Development

Jon Kern discusses the best architecture/technical solutions and ensure that they are repeated by all developers. By tackling the architecture up-front in a serial manner, subsequent parallel development will be much more manageable and predictable. (May 28, Tech Talk)

Productive Programmer: On the Lam from the Furniture Police

This keynote describes the frustrations of modern knowledge workers in their quest to actually get some work done, and solutions for how to guard yourself against all those distractions. Neal Ford talks about environments, coding, acceleration, automation, and avoiding repetition as ways to defeat the misguided attempts to sap your ability to produce good work. (May 26, Tech Talk)

Auto-Scaling Your Existing Web Application

Gil demonstrates how new, aggressive uses of already abundant compute capacity by common applications offer competitive value for application designers. (May 21, Tech Talk)

Automating Hibernate Mapping and Queries For Java Web Development

Chris Keene introduces WaveMaker as a new way to automate the ability to generate Hibernate classes in order to more quickly bring OR mapping into an application. (May 19, Article)

Auto-Scaling Your Existing Web Application

In this session Nati Shalom demonstrates how to take a standard Java EE web application and scale it out or down dynamically without changes to the application code. Seeing as most web applications are over-provisioned to meet infrequent peak loads, this is a dramatic change because it enables growing your application as needed, when needed, without paying for unutilized resources. (May 19, Tech Talk)

Free Book PDF Download: Mastering EJB Third Edition

Mastering EJB was one of the original and most influential EJB books in the industry. Mastering EJB III now returns with two new expert co-authors, updated for EJB 2.1 and 30% new chapters including security, integration, best practices, open source, and more.
(Book PDF Download)

Application Server Matrix

The Application Server Matrix is a detailed listing of J2EE vendors and their application server products, with information on latest version numbers, J2EE spec support and licensing, pricing, platform support, and links to product downloads and reviews.
(Application Server Comparison Matrix)

News | Blogs | Discussions | Tech talks | Patterns | Reviews | White Papers | Downloads | Articles | Media kit | About
Java Solutions
All Content Copyright ©2007 TheServerSide Privacy Policy
Site Map