2013-03-05 30 views
2

我正在爲我的持久性模型編寫bean驗證。我需要調用我的EJB Bean才能從DB中檢索一些配置參數。我怎樣才能做到這一點?JBoss bean驗證需要調用一個EJB

我試圖將我的EntityValidator標記爲@Stateless和@LocalBean,但JBoss仍將我的EntityValidator視爲POJO。我能做點什麼嗎?另外,我如何從POJO中檢索EJB。

回答

2

由於Bean驗證1.0的,你不能得到的EJB注入校驗開箱。不過,這將隨着Bean驗證1.1而改變。

目前,你有以下幾種可能:

  • 通過JNDI檢索EJB:MyEjb myEjb = InitialContext.doLookup(myEjbName);
  • 實現自定義ConstraintValidatorFactory中注入EJB引用到創建Validator對象的
  • 使用Seam Validation,這使得依賴注入驗證對象使用@Inject(聲明:我是Seam驗證的作者)

With Bean 1.1這將是可能的out of box

+0

我們使用CODI與CDI bean一樣。我猜這個實現類似於Seam-Validation。 – 2013-03-10 13:14:41

0

我不認爲jboss會將你的bean注入到JPA驗證器中。

您可以使用JDNI查找您的EJB POJO。

1

目前,注入在驗證器中不起作用。

我已經read有計劃未來的bean validaton擴展來啓用這個行爲。

但是,應該有接縫或deltaspike的延伸,這可以使您能夠提供注射。

檢查: injection in validators

+0

CODI以及Seam3支持它。既然這兩個合併到DeltaSpike,我想他們會支持相同的。我們更喜歡CODI和DeltaSpike,因爲它們在很多環境下測試並且佔用空間很小。 – 2013-03-10 13:16:06