2012-04-18 19 views
1

strutsアクションでEJBオブジェクトを呼び出す際に問題があります。StrutsアクションでEJBオブジェクトを呼び出す

私はglassfishにアプリケーションを配備しました。glassfish管理コンソールのアプリケーション記述には、1つのStatelessSessionBeanが配備されています。私のアプリケーションの.earファイルは、メッセージ駆動型の1つのセッションBeanである.war(Webモジュール)と.jar(ejb)で構成されています。

strutsアクションクラスでセッションBeanを呼び出そうとすると、nullpointer例外が発生します。ここで

は私の呼び出しです:

@EJB 
private AccountFacade accountFacade; 

@Override 
public ActionForward execute(ActionMapping mapping, 
          ActionForm form, 
          HttpServletRequest request, 
          HttpServletResponse response) 
     throws Exception { 
    UserCreationForm userCreationForm = (UserCreationForm) form; 

    Account account = new Account(); 
    account.setName(userCreationForm.getName()); 
    account.setEmail(userCreationForm.getEmail()); 
    account.setPassword(userCreationForm.getPassword()); 

    accountFacade.create(account); 

    return mapping.findForward(NavigationUtils.ACTION_SUCCESS); 
} 

例外は、この行で発生します。

@Stateless 
public class AccountFacade extends AbstractFacade<Account> implements AccountFacadeLocal { 

    /** 
    * Persistence context entity manager. 
    */ 
    @PersistenceContext(unitName = "SearchEnginePU") 
    private EntityManager em; 

    /** 
    * Gets entity manager. 
    * 
    * @return entity manager. 
    */ 
    @Override 
    protected EntityManager getEntityManager() { 
     return em; 
    } 

    /** 
    * Constructor. 
    */ 
    public AccountFacade() { 
     super(Account.class); 
    } 

} 

AccountFacadeLocalインタフェース:

@Local 
public interface AccountFacadeLocal { 

    void create(Account account); 

    void edit(Account account); 

    void remove(Account account); 

    Account find(Object id); 

    List<Account> findAll(); 

    int count(); 

} 

アカウントファサードクラスは、このようになります。

私はここで何が欠けていますか?

答えて

3

Strutsアクションは標準のJava EE Webコンポーネントではなく、Java EEコンテナによってインスタンス化され管理されないため、EJBはStrutsアクションにインジェクトされません。

JNDIを使用してBeanをルックアップするか、http://code.google.com/p/struts-di/(テストされていません)を使用します。同様の質問についてはEJB 3.1: Does it allow injection of beans into resources not managed by the container?も参照してください。

+0

ありがとうございました。私の問題を解決できました。 strutsアプリケーションでEJBを使用しているのは初めてです。そのため、私はこれを知らなかったのです。私はJNDIのルックアップを使用しています。 –

関連する問題