2011-11-15 137 views
2

我正在使用EJB3.1,CDI和持久域對象模式編寫JEE6應用程序。 在某些情況下,我需要在一個實體(jpa2.0)中擁有一個會話bean的實例。 使用@Inject或@EJB注入它不起作用。它始終是一個空引用。將會話bean注入實體

唯一可能的解決方案是通過InitialContext進行查找。但這真的很糟糕。 有沒有人知道解決方案如何從實體訪問會話bean?

我已閱讀關於無狀態會話bean工廠,但無法找到任何示例。

回答

1

實體是由你創建的,如果你想讓bean注入到它們中,它們應該由容器創建。

從技術上講,您可以讓您的實體由CDI容器管理,而不是使new YourEntity使用@Inject @New YourEntity entity。但這有點違反直覺。我沒有嘗試過。

這是關於貧血數據模型vs域驅動設計的更多討論的一部分。即你的實體是否應該是沒有任何行爲的數據持有者,或者他們應該也有邏輯(並隱藏他們的狀態)