刚刚学习ejb,想测试看一下stateful和stateless的区别,在服务器端定义了一个接口:
public interface User {
public int getNo();
}
一个实现的接口:
@Remote
@Stateless
public class StatelessUser implements User {
private int i;
public int getNo() {
return i++;
}
}在客户端想调用这个接口:
public class StatelessTest { public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
//注意这里用到的是接口
User user = (User)ctx.lookup("StatelessUser/remote");
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
}
}
结果打印出来的接过是
0
0
1
1
2
2
3
十分困惑为什么会有重复的数字,而当才用stateful的时候就不会出现这种问题,求解。谢谢
public interface User {
public int getNo();
}
一个实现的接口:
@Remote
@Stateless
public class StatelessUser implements User {
private int i;
public int getNo() {
return i++;
}
}在客户端想调用这个接口:
public class StatelessTest { public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
//注意这里用到的是接口
User user = (User)ctx.lookup("StatelessUser/remote");
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
}
}
结果打印出来的接过是
0
0
1
1
2
2
3
十分困惑为什么会有重复的数字,而当才用stateful的时候就不会出现这种问题,求解。谢谢
User user = (User)ctx.lookup("StatelessUser/remote");
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo()); User user = (User)ctx.lookup("StatelessUser/remote");
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo());
System.out.println(user.getNo()); i值的变化,看看在无状态的中的i值的情况,看一看下在有状态和无状态下i值的变化,但是出现了这种问题,不知道是什么原因,继续求解