1

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

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

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);
}

次の行で例外が発生します。accountFacade.create(account);

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

@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();

}

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

4

1 に答える 1

3

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

JNDIを使用してBeanを検索するか、http://code.google.com/p/struts-di/(テストされていません)を使用します。EJB 3.1:コンテナによって管理されていないリソースへのBeanの注入を許可しますか?も参照してください。同様の質問について。

于 2012-04-18T18:29:49.527 に答える