Rest Weld中的一个bug(CDI实现)?

Rest Weld中的一个bug(CDI实现)?,rest,jboss7.x,java-ee-6,cdi,weld,Rest,Jboss7.x,Java Ee 6,Cdi,Weld,操作系统:Windows7 JVM:JavaSE 1.7 JavaEE:JBossAS 7.1.1 情景: @Path("/test") @RequestScoped public class TestService { @Inject private Instance<Dummy> dummyinInstance; @Path("/execute") @GET public void execute() { dummyi

操作系统:Windows7 JVM:JavaSE 1.7 JavaEE:JBossAS 7.1.1

情景:

@Path("/test")
@RequestScoped
public class TestService {

    @Inject
    private Instance<Dummy> dummyinInstance;


    @Path("/execute")
    @GET
    public void execute() {
        dummyinInstance.get().execute();
    }

}

@Stateless
public class Dummy {
    private Date date=new Date();

    public void execute() {
        System.out.println("current date="+date);
    }
}
@Path(“/test”)
@请求范围
公共类测试服务{
@注入
私有实例dummyinstance;
@路径(“/execute”)
@得到
public void execute(){
dummyinInstance.get().execute();
}
}
@无国籍
公共类虚拟{
私有日期=新日期();
public void execute(){
System.out.println(“当前日期=”+日期);
}
}

当我远程执行(使用rest客户端)Teservice:execute多次时,会打印相同的日期。

无状态会话Bean意味着没有,会话Bean没有内部状态。变量在调用后不会变为空。而且SLSB不会这么快被销毁(好吧,您可以配置它)。实习生变量保存其值

但是,无状态代理的客户端不能保证在多次调用后获得相同的SLSB。事实上,有时看起来您与SFSB交互,因为容器从其SLSB池中调用同一SLSB上的方法,但您永远不应该依赖它

如果你同时与几个客户一起尝试,我相信你会看到你期望的行为

编辑:调用的顺序看起来有点像这样(简化)


TestService->SLSB代理->容器魔法->池->更多容器魔法->虚拟



您的第一个实例会被一次又一次地调用,因为在负载增加之前不需要再创建另一个实例。

如果您通过
@PostConstruct
方法设置日期,您也会更顺利地完成所需任务。