JavaEE5学习笔记07-Web层与EJB集成总结(4):Struts2与EJB集成

 Struts2+EJB+JBoss的集成Demo

因为Struts2仅仅是一个MVC框架,在JavaEE企业级开发中不像JavaEE标准那么吃香,很多东西得自己来做。这就是为什么很多EJB项目的Web前端都是JSF或者直接就是JSP+Servlet,而不是Struts2了。

新建一个Struts2的项目,之后先看Action代码

package action;

 

import javax.naming.InitialContext;

import javax.naming.NamingException;

import com.opensymphony.xwork2.ActionSupport;

import ejb.messageDrivenBean.dto.UserDTO;

import ejb.sessionBean.UserService;

 

public class EJBAction extends ActionSupport {

 

    /**

     *

     */

    private static final long serialVersionUID = 1L;

 

    private UserDTO userDTO;

 

    public UserDTO getUserDTO() {

       return userDTO;

    }

 

    public void setUserDTO(UserDTO userDTO) {

       this.userDTO = userDTO;

    }

 

    /**

     * @return

     */

    public String execute() {

 

       UserService userService;

 

       if (userDTO != null) {

           InitialContext ctx;

           try {

              ctx = new InitialContext();

              userService = (UserService) ctx

                     .lookup("myear/UserServiceEAOImpl/local");

              userService.insertUser(userDTO);

           } catch (NamingException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

 

       }

       return SUCCESS;

    }

}

这里需要指出的就是红色代码部分,通过全局的JNDI名称来获取SessionBean的实例,之后执行业务。在这个JNDI参数中myear是打包后的ear名称。此处必须指明全局的JNDI名称才行。页面代码和servlet页面代码差不多,只是在form中有一些属性变量不一致罢了在此就不再赘述了,Struts2配置文件如下

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

 

    <package name="ejb" extends="struts-default">

       <action name="EJBAction" class="action.EJBAction">

           <result name="success">insertUserFormList.jsp</result>

       </action>

    </package>

</struts>   

打成war包后放入ear包中,修改application.xml文件后重新部署此ear。运行效果与servlet差不多。在此就不再赘述。其实关键就是Action中的EJB组件是通过应用上下文通过全局的JNDI名称获取的服务对象。不用全局名称,会发生找不到绑定名的Exception

你可能感兴趣的:(Web,servlet,javaee,struts,ejb)