2013-08-30 52 views
0

操作系統:Windows 7 JVM:JavaSE的1.7 的Java EE:JBoss AS中7.1.1Weld中的錯誤(CDI實現)?

場景:

@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:執行許多時候,同一日期被打印。

回答

1

無狀態會話Bean意味着不是,即會話Bean沒有實習狀態。通話後,變量不會變空。而且SLSB不會被破壞得這麼快(嗯,你可以配置它)。實習變量保存它們的值。

但是,無狀態代理服務器的客戶端不保證在多次調用後他獲得相同的SLSB。實際上,它有時看起來像是與SFSB交互,因爲容器會從SLSB池中調用同一SLSB上的方法,但不應該依賴它。

如果您在同一時間嘗試使用多個客戶端,我相信您會看到您期望的行爲。

編輯:調用的sequencey看起來有點像這樣(simplefied)


TestService-> SLSB-的Proxy->集裝箱-Magic-> Pool->更集裝箱-Magic->假人


並且您的第一個實例被一次又一次調用,因爲在更多有效負載之前不需要創建另一個實例。

+0

謝謝你我已經解決了我的問題folowing你的幫助 – Belin

+0

如果你通過'@ PostConstruct'方法設置日期,你還可以獲得更多的信息。 –

相關問題