0

操作系统:Windows 7 JVM:JavaSE 1.7 Java EE:JBoss AS 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);
    }
}

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

4

1 回答 1

1

无状态会话 Bean 不意味着会话 Bean 没有内部状态。调用后变量不会变为空。并且 SLSB 不会被这么快破坏(好吧,你可以配置它)。实习生变量保持它们的值。

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

如果您同时对多个客户端进行尝试,我相信您会看到预期的行为。

Edit: The sequencey of calls looks a little bit like this(simplefied)


TestService->SLSB-Proxy->Container-Magic->Pool->Even more Container-Magic->Dummy


And your first instance is called again and again because there is no need to create another instance before the is more payload.

于 2013-08-30T10:44:06.493 回答