我正在研究攔截器如何在java中工作。我正在使用Netbeans IDE並創建了一個名爲Interceptors的新項目。攔截器的@AroundInvoke未觸發
我創建了一個名爲註釋「登錄」
@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target({METHOD, TYPE})
public @interface Logged { }
然後,我創建了一個類「LoggedInterceptor」
@Interceptor
public class LoggedInterceptor implements Serializable {
public LoggedInterceptor() {}
@AroundInvoke
public Object logMethodEntry(InvocationContext invocationContext) throws Exception
{
System.out.println("Entering method: "
+ invocationContext.getMethod().getName() + " in class "
+ invocationContext.getMethod().getDeclaringClass().getName());
return invocationContext.proceed();
}
}
然後我創建了一個類,使使用記錄的註解
public class SuperService
{
@Logged
public String deliverService(String uid)
{
return uid;
}
public static void main(String[] args)
{
SuperService ss = new SuperService();
System.out.println(ss.deliverService("sisi"));
}
}
什麼都沒有發生。後來,我在src /主/資源/ META-INF /一個XML所謂的beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1"
bean-discovery-mode="all">
<interceptors>
<class>ascompany.interceptors.LoggedInterceptor</class>
</interceptors>
</beans>
但logMethodEntry方法文件添加當我打電話deliverService方法不會被調用。我是否缺少一些其他配置文件?還是隻是別的?
我已經嘗試過@priority註釋添加到LoggedInterceptor但什麼都沒有改變......
編輯:
我加logget註解LoggedInterceptor作爲@Luciano範德Veekens說,但什麼都沒有改變
我加了......但沒有改變......別的東西? –
@MarcoCastano攔截器只能在部署在應用服務器上的EJB上工作 –
@LucianVanDerVeekens好了,所以我認爲它錯了......感謝您的時間......您知道在此方法執行之前或之後是否有可執行的內容辦法? –