在HelloWorldSession的例子中,該bean在方法調(diào)用之間仍記得一個(gè)問候的字符串。例如,你調(diào)用setGreeting來修改歡迎詞,當(dāng)你調(diào)用getGreeting時(shí),該session會(huì)記得保存的歡迎詞。
列表6.5“Hello World”session bean Remote 接口(無狀態(tài)版本)
Listing 6.5 Source Code for StatelessHello.java
package usingj2ee.hello;
import java.rmi.*;
import javax.ejb.*;
/** Defines the methods you can call on a StatelessHello object */
public interface StatelessHello extends EJBObject
{
/** Returns a greeting for the named object */
public String greet(String thingToGreet) throws RemoteException;
}
在這個(gè)例子中,Remote接口僅提供了一個(gè)greet方法,該方法接收一個(gè)參數(shù)并且返回一個(gè)歡迎詞。例如,假如傳送“World”參數(shù)給greet,greet方法將返回“Hello World!”。
列表6.6展示了StatelessHello bean的Home接口。
Listing 6.6 Source Code for StatelessHelloHome.java
package usingj2ee.hello;
import java.rmi.*;
import javax.ejb.*;
/** Defines the methods for creating a StatelessHelloWorld */
public interface StatelessHelloHome extends EJBHome
{
/** Creates a StatelessHello session bean. A stateless session bean
can't have a create method that takes parameters. */
public StatelessHello create() throws RemoteException, CreateException;
}
進(jìn)入討論組討論。
假如bean的create方法接受任何的參數(shù),session bean實(shí)例之間的行為將會(huì)有所不同,因?yàn)槟銥閏reate方法提供不同的值。
實(shí)現(xiàn)無狀態(tài)session bean與有狀態(tài)的session bean是一樣簡(jiǎn)單的。列表7中的是StatelessHelloImpl類,它實(shí)現(xiàn)了Remote和Home接口。
Listing 6.7 Source Code for StatelessHelloImpl.java
package usingj2ee.hello;
import java.rmi.*;
import java.util.*;
import javax.ejb.*;
/** The implementation class for the StatelessHello bean */
public class StatelessHelloImpl implements SessionBean
{
/** The session context PRovided by the EJB container. A session bean must
hold on to the context it is given. */
private SessionContext context;
/** An EJB must have a public, parameterless constrUCtor */
public StatelessHelloImpl()
{
}
/** Called by the EJB container to set this session's context */
public void setSessionContext(SessionContext aContext)
{
context = aContext;
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注