0

非常に単純なアプリケーションを作成しましたが、CDI が期待どおりに動作しません。

定義

@EJB private CustomerProviderSessionBeanLocal customerProvider;

Bean のインスタンスにはなりません。

私のステートレス セッション Bean の定義

@Local
public interface CustomerProviderSessionBeanLocal { ... }

@Stateless
@EJB(name="ejb/CustomerProvider", beanInterface = CustomerProviderSessionBeanLocal.class, beanName = "CustomerProviderSessionBean")
public class CustomerProviderSessionBean implements 
CustomerProviderSessionBeanLocal ...

コントローラー Bean (JSF 用):

@SessionScoped @ManagedBean
public class BackingBean {
    @EJB private CustomerProviderSessionBeanLocal customerProvider;

JBoss の結果:

java:global/2017_JEE_App_1_war_exploded/CustomerProviderSessionBean!beans.CustomerProviderSessionBeanLocal

java:app/2017_JEE_App_1_war_exploded/CustomerProviderSessionBean!beans.CustomerProviderSessionBeanLocal
java:module/CustomerProviderSessionBean!beans.CustomerProviderSessionBeanLocal
java:global/2017_JEE_App_1_war_exploded/CustomerProviderSessionBean
java:app/2017_JEE_App_1_war_exploded/CustomerProviderSessionBean
java:module/CustomerProviderSessionBean

それでも、属性 customerProvider は初期化されていません。コンストラクターが呼び出されました (ログ ファイルで確認できます)。いくつかのバリエーションを試しました(名前の有無、ローカルインターフェイスなど)。JNDI-Lookup を使用しても機能します。

initialContext = new InitialContext();
Object o = initialContext.lookup("java:app/2017_JEE_App_1_war_exploded/CustomerProviderSessionBean");

@EJB アノテーションで同じ JNDI 名を使用しても機能しない

wildfly の設定を変更していません。

誰でも助けることができますか?

4

2 に答える 2