簡體   English   中英

EJB3無狀態會話Bean是否允許繼承?

[英]Is inheritance allowed for EJB3 Stateless Session Beans?

假設我有一個無狀態bean:

@Stateless(name = "fooBean")
@LocalBean
public class Foo {
...
}

我想創建一個用於測試的模擬(使用CDI)

@Alternative @Specializes
public class FooMock extends Foo {
...
}

我在beans.xml注冊了mock,當我用OpenEJB運行它時,我得到以下異常:

...
Caused by: javax.naming.NameAlreadyBoundException:
openejb/Deployment/fooBean/com.company.Foo!LocalBeanHome

在我看來,容器為Foo創建了一個接口,因為@LocalBean現在也由FooMock實現。 OpenEJB嘗試使用相同生成的接口的相同名稱綁定這兩個類,這是不可能的。

當然,如果我在Foo類中注釋掉@Stateless@LocalBean ,它運行正常。

有任何想法或建議來解決這個問題嗎?

而是做類似的事情:

@Local
public interface Foo {
...
}

@Stateless
public class FooBean implements Foo {
...
}

然后做你的模擬。

@Alternative
@Specializes
public class FooMock implements Foo {
...
}

但是我建議你看看Arquillian它會讓你的測試變得如此簡單,而不需要@Alternative和特殊的beans.xml條目進行測試。

暫無
暫無

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

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