簡體   English   中英

如何在集成測試(OpenEjb)中測試有狀態會話bean的鈍化?

[英]Howto test passivation of stateful session beans in integration test (OpenEjb)?

我在集成測試(@LocalClient批注的測試類)中使用OpenEjb本地服務器(3.1.4)。

@LocalClient
public class BoxDaoTest{

    @EJB
    private BoxDao boxDao;
    ...
}

BoxDao ist一個有狀態的會話bean。 是否有可能在OpenEjb中觸發BoxDao的鈍化以在集成測試中對其進行測試?

您可以在用來啟動測試案例中的OpenEJB的InitialContext屬性中創建/配置Stateful容器。

這些設置可以解決問題:

final Properties p = new Properties();
p.put("MyStatefulContainer", "new://Container?type=STATEFUL");
p.put("MyStatefulContainer.Capacity", "0");
p.put("MyStatefulContainer.Frequency", "0");

p.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
final InitialContext initialContext = new InitialContext(properties);
//lookup your beans from the initialContext

這將導致@Stateful bean本質上永遠不會駐留在內存中,它將在每個方法調用或生命周期回調中從磁盤讀取並寫回到磁盤。

EJB 3.1 javax.ejb.embeddable.EJBContainer API可以完成相同的操作:

final Properties p = new Properties();
p.put("MyStatefulContainer", "new://Container?type=STATEFUL");
p.put("MyStatefulContainer.Capacity", "0");
p.put("MyStatefulContainer.Frequency", "0");

final EJBContainer container = EJBContainer.createEJBContainer(p);
Foo foo = (Foo) container.getContext().lookup("java:global/yourapp/yourbean");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM