2012-09-06 64 views

回答

5

您可以在測試用例中用於啓動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豆基本上從來沒有駐留在內存中,它會從磁盤讀取和寫回磁盤上的每個方法調用或生命週期回調。

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"); 

同樣的事情可以與EJB 3.1 javax.ejb.embeddable.EJBContainer API來完成