The term βconditionβ is not misleading in this context. What he means is the dialog state, that is, if the client makes several calls, the bean session does not know. Imagine a sequence of calls:
reserveSeatsOnFlight() ;chooseMealPreference() ;confirmBooking() .
You have a dialog state, that is, the second call must be made in the same bean as in the first call, or it just does not make sense. What the session does with the beans state.
A stand-alone beans session may have instance variables, but they are essentially global. If you have a session pool without beans state (which you may or may not depending on what the container decides to do), these instances may or may not exist from one call to another. Therefore, usually avoid instance variables. There are other mechanisms for this kind of thing.
Let me give you an example. Imagine this call in a non-bean session:
public void bookFlight(List<Passsenger> passengers, FlightNumber flight, Date date) { ... }
if you enter an instance variable to count the number of orders and increase it with each call, subsequent calls may cause different beans, so different values ββwill be displayed. What I mean does not necessarily make sense.
So, returning to the first example, one way to deal with this would be to pass the state to the caller:
public interface ReservationSystem { public int createNewBooking(); public int reserveSeatsOnFlight(int bookingId, int seats); public int chooseMealPreference(int bookingId, ...) ... }
See how the above no longer has a dialog state? Ok, but it is now encapsulated in the bookingId that you are going through. A session without a bean state can receive an order and continue from where it was not yet.