在Struts中调用EJB对象Action

在Struts中调用EJB对象Action

问题描述:

我在调用struts动作中的EJB对象时遇到问题。在Struts中调用EJB对象Action

我在glassfish中部署我的应用程序,在glassfish管理控制台的应用程序描述中我看到有一个StatelessSessionBean被部署。我的应用程序的.ear文件包含.war(web模块)和.jar(ejb),一个消息驱动,一个会话bean。

当我尝试在struts动作类中调用会话bean时,我得到了空指针异常。

这里是我的电话:

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

} 

我在这里错过了什么?

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查找,每一个作品都很好。 – 2012-04-18 19:39:41