耽误您几分钟帮忙看一下好吗,谢谢 
这是客户端测试代码 
public static void main(String[] args) throws NamingException { 
  InitialContext initialContext = new InitialContext(); 
  
  StatelessEjb ejb1 = (StatelessEjb)initialContext.lookup("StatelessEjbBean/remote"); 
  System.out.println(ejb1.getResult()); 
  ejb1.compute(1); 
  System.out.println(ejb1.getResult()); 
  ejb1.compute(1); 
  System.out.println(ejb1.getResult()); 
  ejb1.compute(1); 
  System.out.println(ejb1.getResult()); 
  ejb1.compute(1); 
  System.out.println(ejb1.getResult()); 
  ejb1.compute(1); 
  System.out.println(ejb1.getResult()); 
  ejb1.compute(1); 
  System.out.println(ejb1.getResult()); 
  
  
  System.out.println("--------第一次会话结束,第二次会话开始----------"); 
  /** 
   * 第二次会话 
   */ 
  StatelessEjb ejb2 = (StatelessEjb)initialContext.lookup("StatelessEjbBean/remote"); 
  System.out.println(ejb2.getResult()); 
  ejb2.compute(1); 
  System.out.println(ejb2.getResult()); 
  ejb2.compute(1); 
  System.out.println(ejb2.getResult()); 
  ejb2.compute(1); 
  System.out.println(ejb2.getResult()); 
  ejb2.compute(1); 
  System.out.println(ejb2.getResult()); 
  ejb2.compute(1); 
  System.out.println(ejb2.getResult()); 
  ejb2.compute(1); 
  System.out.println(ejb2.getResult()); 
} 这是ejb实现类 package com.bjsxt.ejb; import javax.ejb.Remote; 
import javax.ejb.Stateless; @Stateless 
@Remote 
public class StatelessEjbBean implements StatelessEjb { private int state; public void compute(int i) { 
  state = state + 1; 
  
} public int getResult() { 
  return state; 

} 我输出的结果是这样 







--------第一次会话结束,第二次会话开始---------- 






6 怎么是这种结果呢,按理说应该是这样啊 







--------第一次会话结束,第二次会话开始---------- 




10 希望帮忙,再次感谢,我很郁闷,我是看着教程做的 

解决方案 »

  1.   

    有可能是你的EJB容器没有使用对象池管理无状态会话Bean.
    不论如何,像这种在无状态会话Bean中存储状态的做法是不可取的。
      

  2.   

    无状态的 Session Bean 容器在使用完一次之后会进行保存起来,为一下个调用做准备,其中成员变
    量中的内容与调用是无关的,因此称为无状态的 Session Bean。无状态的 Session Bean 中一般只写一些 final 的成员变量或者是不会更改的成员变量。否则的话需
    要使用有状态的 Session Bean
      

  3.   

    stateless session bean在ejb容器内由实例池管理,如果你使用的是jboss那就是singleton(单例)
    你这样做的是不合法的,stateless session bean一般不要对对象变量进行操作,因为它是单例的,多个线程并行访问会有同步问题!






    6