,耽误您几分钟帮忙看一下好吗,谢谢
这是客户端测试代码
public static void main(String[] args) throws NamingException {
[color=darkblue] 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());[/color]
System.out.println("--------第一次会话结束,第二次会话开始----------");
/**
这是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;
}
}
我输出的结果是这样
0
0
0
0
0
0
0
--------第一次会话结束,第二次会话开始----------
6
6
6
6
6
6
6
怎么是这种结果呢,按理说应该是这样啊
0
1
2
3
4
5
6
--------第一次会话结束,第二次会话开始----------
6
7
8
9
10
希望帮忙,再次感谢,我很郁闷,我是看着教程做的
你是用jboss服务器的吧,
本来无状态会话bean就不应该保存实例变量,
而你非要这么做的话,这就要看ejb服务器的内部处理机制看了,
不同的ejb服务器的结果可能是不同的
第一,不要使用无状态的SessionBean作回返操作,为什么称为无状态,就是要你不要以来对象的内部字段状态,因为它有对象迟,不一定在你调用的时候就执行,它有自己的调度机制。如果你想作请用状态SessionBean,那样的话,每个连接产生一个活动的对象,对象内部状态是稳定的,一般不使用对象池!