2011-06-27 13 views
2

同じVM内のWebモジュールからアクセスしたいローカルEJBを作成しました。私のコードは次のようになります:Java EE:WebモジュールからローカルEJBにアクセスする方法は?

@EJB 
private UserBeanLocal userBean; 

public UsuarioManagedBean() { 
    InitialContext c = new InitialContext(); 
    userBean = (UserBeanLocal) c.lookup("java:global/UsersApp/Users-ejb/UserBean!biz.users.beans.UserBeanLocal"); 
} 

public List<User> getUsers() { 
    users = this.userBean.listUsers(); 
    return users; 
} 

これはうまくいきます。

@EJB 
private UserBeanLocal userBean; 

public UsuarioManagedBean() { 

} 

public List<User> getUsers() { 
    users = this.userBean.listUsers(); 
    return users; 
} 

しかし、私はこれをしようと私が取得:しかし、誰かが私は地元の豆で働いている場合、私は、ルックアップを行う必要がないことを、私はこのような注入を行う必要がある私に言いましたthis.userBeanのnull例外です。 私にアドバイスした人はJBossと協力し、私はグラスフィッシュを使用しています。私は何か間違っているのですか?

+0

.. JVMのバージョン、Glassfishのバージョンなどのような詳細を公開してくださいuがJEE​​とGlassFishのどのバージョンを使用していますか? JEE5は依存性注入(DI)をサポートしているので、古いバージョンを使用している場合は動作しません。 Jbossと同じですが、DIがjboss-4.2.3では動作しないという制限がありますが、jboss 5では問題ありません。 – rajasaur

+0

私はglassfishを使用しています3.0.1 – Lucia

答えて

1

@EJBアノテーションは、サーブレット、mdbs、その他のejbsなどのアプリケーションサーバー制御クラスでのみ機能します。 UsuarioManagedBeanはpojoなので、リソースは決して注入されないので、NPEだと思います。

1

@ルシアは、UsuarioManagedBeanがPOJOのように見えます。 @ Kalは正しいです。 pojoにejbを挿入することはできません。 本当にpojoに注入したいのであれば、CDIの使用を検討してください。あなたのコードが @Inject private UserBeanLocal userBean;

以下のようになります。CDIを使用して

+0

実際にUsuarioManagedBeanはpojoです。 – Lucia

関連する問題