Hi Xinglie, As far as i know(correct if im wrong, i do not have experience with Struts) a Strut Action has its own lifecycle which is different than a CDI bean, so to make it be a cdi bean you should create an extension and transform all Struts beans/actions into CDI beans by creating a javax.enterprise.inject.spi.Bean and implementing all its methods and register it into CDI.
Basically you will observe to a processAnnotatedType(@Observes ProcessAnnotatedType<StrutsAction> pat) to gather all struts beans. Later in afterBeanDiscovery event you will create the javax.enterprise.inject.spi.Bean for each Struts bean you gathered. You should look at this weld chapter about portable extensions: http://docs.jboss.org/weld/reference/latest/en-US/html/extend.html. Also take a look at Struts CDI plugin http://struts.apache.org/2.3.3/docs/cdi-plugin.html maybe it saves you from creating the extension. Maybe someone experiencied in Struts(also in CDI ;) ) could give a more detailed answer. I hope it helps Att, Rafael M. Pestano Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul Graduando em Ciência da Computação UFRGS http://code.google.com/p/jsf-conventions-framework/ http://rpestano.wordpress.com http://twitter.com/realpestano ________________________________ De: Xinglie Zheng <[email protected]> Para: [email protected]; Rafael Pestano <[email protected]> Enviadas: Terça-feira, 26 de Junho de 2012 21:40 Assunto: Re: Interceptor doesn't Hi Rafael, I think almost all Java class is a CDI bean. Do I need to do extra declaration for making a Java class into CDI bean? Regards, Xinglie Zheng On Tue, Jun 26, 2012 at 4:19 PM, Rafael Pestano <[email protected]> wrote: Hi Xinglie Zheng, > >you added your struts Action as a CDI bean in an extension? otherwise i think >OWB cant intercept a non CDI. > > >Att, > >Rafael M. Pestano > >Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul >Graduando em Ciência da Computação UFRGS >http://code.google.com/p/jsf-conventions-framework/ >http://rpestano.wordpress.com >http://twitter.com/realpestano > > > >________________________________ >De: Xinglie Zheng <[email protected]> >Para: [email protected] >Enviadas: Terça-feira, 26 de Junho de 2012 16:59 >Assunto: Interceptor doesn't > > > >I am using OpenWebbeans with Struts 1.2 framework in Weblogic 11g. I added an >interceptor for security check. But when I debug in Eclipse, the breakpoint >at interceptor was never reached. Following is my code: > > > >@InterceptorBinding >@Target({ElementType.METHOD, ElementType.TYPE}) >@Retention(RetentionPolicy.RUNTIME) >public @interface Secure { >@Nonbinding int[] allowedUserRole() default {}; >} > > >//Struts action class >public final class EditUserInfoAction extends Action { >@Secure(allowedUserRole={1,2}) >public ActionForward execute(ActionMapping mapping, ActionForm form, >HttpServletRequest request, >HttpServletResponse response) throws IOException, ServletException { >...... > } > > >//Interceptor class >@Secure >@Interceptor >public class ACLInterceptor { >@AroundInvoke >public Object manageACL(InvocationContext ctx) throws Exception { >...... > } > > >manageACL() method was never invoked. I really appreciate your help. >
