Implementing the AdviceBean as a stateFUL bean

So far, the AdviceBean we’ve written hasn’t needed to be stateful. It doesn’t keep or use any client-specific state, so it doesn’t need a create() method with arguments. But what if we did want to make it a stateful bean? What if the business logic needed to, say, keep a record of the conversation it’s having so that it never gives out the same advice more than once in a session? Even if the choice of an advice string is purely random, if you want to ensure the advice isn’t repeated during a session, you’ll have to keep track of it in an instance variable.

And you might have other changes, too, like making the create methods take arguments that contain the type of advice the client is looking for, or some other kind of preference. In that case, each time the client made a method call, you’d want to check the status of that client-supplied creation initialization preference, and tailor your advice based on the value set during the bean’s ejbCreate(). Later in the book, we’ll look at a more elaborate version of this AdviceBean, but for now, we’ll make just a subtle change to make the bean stateful.

Brain Power

You know that the bean class is going to change, but what about the client and the two interfaces? Do one or more of those have to change? Really think through the implications before you turn the page.

Things you can add if the bean is stateFUL

  1. You can have more than one create method.

  2. The create method can have arguments.

  3. The bean can be passivated, so you can write code in ejbPassivate() and ejbActivate().

Get Head First EJB now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.