我在設置Java EE 6 CDI攔截器時遇到問題。我正在使用嵌入式glassfish,我在web應用程序的beans.xml中指定了攔截器。攔截器不攔截
<beans
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<interceptors>
<class>ServiceInterceptor</class>
</interceptors>
</beans>
我想,以確保這個bean:
@Named
//@Stateless
@RequestScoped
public class SecuredMethodJSFBean /*implements Serializable*/{
@Inject
protected SecuredMethodSample securedMethodSample;
/*
@CurrentUser
@SessionScoped
@Inject
protected RuntimePrincipalAware principal;
//protected JSFLoginBean jsfLoginBean;
*/
public SecuredMethodJSFBean()
{
super();
System.out.println("creating secured method jsf bean");
}
@Secured("adfadfafd")
public void doSomething()
{
//System.out.println("\n\n\n\nprincipal:" + principal);
//System.out.println("principal:" + jsfLoginBean.getPrincipal());
//securedMethodSample.doSomething(jsfLoginBean.getPrincipal().getName());
//return(jsfLoginBean.getPrincipal().getName());
//securedMethodSample.doSomething(principal.getName());
//return(principal.getName());
//return("secured-method");
securedMethodSample.doSomething("testing ...");
}
}
什麼我需要做的就是我的攔截器運行?
此外,我正在嘗試使用攔截器攔截servlet使用的bean的方法調用。由於這些豆類是豆類,我應該能夠攔截它們。但是,我無法這樣做。我原本試圖直接攔截servlet中的方法調用,但它們不是CDI bean,因此沒有任何意義。
感謝,
沃爾特
這是beans.xml中攔截器的完全量化名稱嗎? @Secured註釋是否定義爲攔截器? – 2013-02-15 21:52:34
由於其他原因,我刪除了完全限定名,但是,容器確實看到此文件並解析該行。如果我放入了一些虛假的東西,它會引發錯誤。 – Walter 2013-02-16 17:01:42
如何獲得該bean的實例? – covener 2013-02-16 20:40:43