我在嘗試專門化EJB。我有@Specializes for EJB
package com.foo.core;
@Stateless
public class MyFacade { }
和
package com.foo.extension;
@Specializes
@Stateless
public class MyFacade extends com.foo.core.MyFacade { }
在我看來,這應該工作,因爲@Specializes的意思是,CDI應該忘記的核心類,而是使用專門的類。我還發現這個錯誤https://issues.jboss.org/browse/WELD-1451,它指出可以專門化一個EJB。
但如果我嘗試部署我的應用程序(我使用的Weblogic 12.1.3),我總是得到
weblogic.utils.ErrorCollectionException:有1個嵌套的錯誤: weblogic.j2ee.dd .xml.AnnotationProcessException:複製EJB名稱 'MyFacade' 發現:標註 '無狀態' 的bean類 com.foo.core.MyFacade和annoation '無狀態' 的bean類 com.foo.extension.MyFacade
我做錯了什麼?
謝謝!
CDI規範沒有定義EJB規範的工作方式。儘管您提到的缺陷已得到解決,但與其關聯的拉取請求已被拒絕,所以我不確定是否有實際的解決方案。如果你想專精,我會推薦使用純CDI豆。 –
我曾考慮將我的EJB更改爲純CDI bean。但我需要聲明式事務控制。我可以@Transactional,但這是JEE7的一部分,因此在Weblogic 12.1.3中不可用。 – Ben
正如JohnAment所說,@Specializes是一個CDI特性及其規範,並沒有定義如何使用EJB。 我使用weblogic,我建議你,如果你等待這種情況,請修復weblogic,這可能需要很長時間。 因此,試着找到另一種只使用CDI規範的方法。 –