该plugi提供struts的Actio及Iterceptor对EJB组件及Resource的无侵入式依赖注入(DI)。
安装方法:将struts-ejb3-plugi.jar考入/WEB-INF/lib目录中。这时使用的为plugi的默认配置,该配置为c/agrael/struts/plugi/ejb3/default-struts-ejb3-plugi.properties中的配置。配置信息如下:
#ENC的默认名ENCPath=java:comp/ev/#应用服务器的具体实现类,该类是c.agrael.struts.plugi.ejb3.ApplicatioServer的实现类ejbCotaier=c.agrael.struts.plugi.ejb3.JbossApplicatioServer#是否解析@Resource的标志true为解析,false为不解析isParseResource=false#是否解析@EJB的标志true为解析,false为不解析isParseEJB=true#ear的路径名,如果没有则为空字符串earFileBaseName=#为远程Bea时的JNDI路径remote=remote#为本地Bea时的JNDI路径local=local如果要修改默认的配置,需要在classpath下建立为struts-ejb3-plugi.properties的资源文件覆盖默认的配置。
除了plugi本身的配置以外,还需要在classpath下创建名为jdi.properties的资源文件用做jdi配置,plugi中使用到的jdi查找依赖于该配置。
使用例子:
@Iterceptors(Iterceptor3.class)publicclassEjbTestActio1extedsActioSupport{ privatestaticfiallogserialVersioUID=4126146938063764047L; @EJB privateTestSessioBea1LocaltestSessioBea1Local; @EJB(ame="ejb/sessioBea1") privateTestSessioBea1RemotesessioBea1; privateTestSessioBea1Remotesessio; @EJB publicvoidsetSessio(TestSessioBea1Remotesessio){ this.sessio=sessio; } @PostCostruct @Iterceptors({Iterceptor2.class,Iterceptor3.class}) publicvoidiit(){ //... } @Iterceptors({Iterceptor3.class,Iterceptor1.class,Iterceptor2.class}) publicStrigexecute()throwsExceptio{ //... returSUCCESS; }}在Iterceptor中使用方式和在Actio中的使用方式相同。需要注意的是,在Actio的execute(或者自定义的名称)方法中同时使用struts2的Iterceptor和@Iterceptors时,@Iterceptors会在Iterceptor之前开始,在Iterceptor之后结束。
目前的版本暂时不支持@PreDestroy。现阶段只有jboss应用服务器的实现,在以后的版本中会陆续增加如weblogic、glassfish等应用服务器的实现。如果现在需要jboss之外的实现,可实现c.agrael.struts.plugi.ejb3.ApplicatioServer接口,并使用struts-ejb3-plugi.properties修改ejbCotaier为实现类。







评论