struts2-ejb3-plugin :struts2對ejb3支持的plugin

openkk 12年前發布 | 30K 次閱讀 Struts2 Web框架

該plugin提供struts的Action及Interceptor對EJB組件及Resource的無侵入式依賴注入(DI)。

安 裝方法: 將 struts-ejb3-plugin.jar 考入 /WEB-INF/lib 目錄中。這時使用的為plugin的默認配置,該配置為 cn/agrael/struts/plugin/ejb3/default-struts-ejb3-plugin.properties中的配置。配 置信息如下:

#ENC的默認名
ENCPath=java:comp/env/
#應用服務器的具體實現類,該類是 cn.agrael.struts.plugin.ejb3.ApplicationServer的實現類
ejbContainer=cn.agrael.struts.plugin.ejb3.JbossApplicationServer
#是否解析@Resource的標志 true 為解析,false 為不解析
isParseResource=false
#是否解析@EJB的標志 true 為解析,false 為不解析
isParseEJB=true
#ear的路徑名,如果沒有則為空字符串
earFileBaseName=
#為遠程Bean時的JNDI路徑
remote=remote
#為本地Bean時的JNDI路徑
local=local

如 果要修改默認的配置,需要在 classpath 下建立為 struts-ejb3-plugin.properties 的資源文件覆蓋默認的配置。

除了plugin本身的配置以外,還需要在 classpath 下創建名為 jndi.properties 的資源文件用做 jndi配置 ,plugin 中使用到的jndi查找依賴于該配置。

使用例子:

@Interceptors(Interceptor3.class)
public class EjbTestAction1 extends ActionSupport{

        private static final long serialVersionUID = 4126146938063764047L;

        @EJB
        private TestSessionBean1Local testSessionBean1Local;

        @EJB(name="ejb/sessionBean1")
        private TestSessionBean1Remote sessionBean1;

        private TestSessionBean1Remote session;

        @EJB
        public void setSession(TestSessionBean1Remote session) {
                this.session = session;
        }

        @PostConstruct
        @Interceptors({Interceptor2.class,Interceptor3.class})
        public void init(){
                //...
        }

        @Interceptors({Interceptor3.class,Interceptor1.class,Interceptor2.class})
        public String execute() throws Exception {
                //...
                return SUCCESS;
        }
}

在 Interceptor中使用方式和在Action中的使用方式相同。

需要注意的是,在Action的execute(或者自定義的名稱)方法中同時使用struts2的 Interceptor和@Interceptors時,@Interceptors會在Interceptor之前開始,在Interceptor之后 結束。

目前的版本暫時不支持@PreDestroy。 現階段只有 jboss 應用服務器的實現,在以后的版本中會陸續增加如 weblogic、glassfish 等應用服務器的實現。如果現在需要 jboss 之外的實現,可實現 cn.agrael.struts.plugin.ejb3.ApplicationServer 接口,并使用 struts-ejb3-plugin.properties 修改 ejbContainer 為實現類。

項目主頁:http://www.baiduhome.net/lib/view/home/1330770691671

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!