java 创建一个支持本地调用的无状态SessionBean至少需要包含 哪些部件
发布网友
发布时间:2022-07-15 07:40
我来回答
共1个回答
热心网友
时间:2023-11-25 12:51
首先说一下Stateless 与 Stateful 会话 Bean 区别
无状态 (Stateless)
在不同方法调用间不保留任何状态
事务处理必须在一个方法中结束
通常资源占用较少;可以被共享(因为它是无状态的)
有状态 (Stateful)
可以在不同的方法调用间保持针对各个客户端的状态
与客户端的联系必需被维持;通常开销较大
无状态会话 Bean 的生命周期非常简单:容器可以调用 Bean 的 remove() 方法来回收 Bean,来控制资源的使用
以EJB为例 开发一个BEAN需要开发三种类
Home 接口
定义如何创建 bean
对无状态会话 bean 而言非常简单
对其它类型的 bean,home 接口有更重要责任
开发人员提供一个接口
接口描述协议
容器自动生成实现代码
public interface CalculatorHome extends EJBHome{
public Calculator create()
throws CreateException, RemoteException;
}
Remote 接口
定义您的 bean 的协议:客户端如何访问您的 bean?
所有的方法必需抛出 java.rmi.RemoteException,也可抛出其它与应用相关的异常
不要将 "remote" 接口与 java.rmi.Remote 混淆---不同的概念
public interface Calculator extends EJBObject{
int proct(int operand1, int operand2) throws RemoteException;
}
Bean 类
提供您的 bean 的行为:实现在 remote 接口中定义的方法; 不直接 "implements" remote 接口
public class CalculatorBean implements SessionBean{
private SessionContext mySessionCtx = null;
public int proct(int operand1, int operand2) {
return operand1*operand2;
}
public void ejbCreate() throws CreateException, RemoteException{}
public void ejbActivate() throws RemoteException{}
public void ejbPassivate() throws RemoteException{}
public void ejbRemote() throws RemoteException{}
public SessionContext getSesstionContext() {....}
public void setSesstionContext(SessionContext ctx) {....}
}
容器将根据这些类的定义来生成运行时的支持代码