從編程的角度看,創建無狀態的Session Bean和創建有狀態的是一樣簡單的。除了在配置工具里修改一個設置外,僅有的一點不同是在bean的初始設計階段,無狀態的Session Bean并不記得方法調用之間的任何東西,bean需要的任何消息都必須由客戶端獲得。雖然無狀態的Session Bean并不記得面向session的數據,不過可以在一個無狀態的session bean中存放數據,只是不能存放與客戶端相關的數據。
在HelloWorldSession的例子中,該bean在方法調用之間仍記得一個問候的字符串。例如,你調用setGreeting來修改歡迎詞,當你調用getGreeting時,該session會記得保存的歡迎詞。
列表6.5“Hello World”session bean Remote 接口(無狀態版本)
Listing 6.5 Source Code for StatelessHello.java import java.rmi.*; /** Defines the methods you can call on a StatelessHello object */ public interface StatelessHello extends EJBObject /** Returns a greeting for the named object */ } |
在這個例子中,Remote接口僅提供了一個greet方法,該方法接收一個參數并且返回一個歡迎詞。例如,如果傳送“World”參數給greet,greet方法將返回“Hello World!”。
列表6.6展示了StatelessHello bean的Home接口。
Listing 6.6 Source Code for StatelessHelloHome.java import java.rmi.*; /** Defines the methods for creating a StatelessHelloWorld */ public interface StatelessHelloHome extends EJBHome /** Creates a StatelessHello session bean. A stateless session bean } |