无状态会话 Bean 的问题[java ejb](100分)

  • 主题发起人 主题发起人 real_clq
  • 开始时间 开始时间
R

real_clq

Unregistered / Unconfirmed
GUEST, unregistred user!
无状态会话 Bean
-------------------------------------
代码如下,在servlet中重复调用a1和b1函数,其中s1的值竟然和一个全局变量一样:
第一次调用改变之后,第二次调用可以看到上次改变的结果!!按道理再次调用时s1的值应该是重新变为""才对呀?
-------------------------------------
package ejb1;
import javax.ejb.*;
public class ejb11Bean implements SessionBean {
SessionContext sessionContext;
//clq
String s1="";
public void ejbCreate() throws CreateException {
/**@todo Complete this method*/
}
public void ejbRemove() {
/**@todo Complete this method*/
}
public void ejbActivate() {
/**@todo Complete this method*/
}
public void ejbPassivate() {
/**@todo Complete this method*/
}
public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}
public java.lang.String a1(String in1) {
/**@todo Complete this method*/
s1=s1+in1;
return in1;
//s1=s1+in1;
//return s1;
}
public java.lang.String b1(String in1)
{
/**@todo Complete this method*/
String ss1="<br>("+s1+")";
return ss1;
// return null;
}
}

 
無狀態Bean池化之必然結果,因s1=s1+in1;保存了結果,但Bean并未銷毀而是池化,再次調用
時便會有上一次之結果!
 
那这样的话“无状态会话 Bean”不是有“状态”了,还要“有状态会话 Bean”干什么?
 
to real_clq,
你誤解了无状态会话 Bean与有状态会话 Bean之間的區別,此"状态"指客戶端的"状态",
无状态会话 Bean可以用一些編程手段保存自身的"狀态",such as const variable,應用程序
服務器根據部署時關鍵字"Stateless"來進行一些"狀态"的管理,所以无状态会话 Bean与有状态会话 Bean
叫无客戶状态会话 Bean与有客戶状态会话 Bean也許更容易理解!
 
wudoo兄弟说得是,只是网上的教程和我买的书都说得含糊不清。我心中实在是不安,就此有此问。
多谢wudoo兄弟解惑。
 
放一放,下午再结,以便让更多的人看一看。wudoo兄不介意吧?:)
 
不會介意,如果你真的是明白了,就是我最大的滿足!
 
再谢wudoo兄。
 
后退
顶部