자바에서 인터셉터가 작동하는 방식을 연구하고 있습니다. 나는 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"));
}
}
아무 일도 없었습니다. 나중에 내가 deliverService 메서드를 호출 할 때 호출되지 않습니다
<?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 방법 beans.xml 환경이라고 SRC/메인/자원/META-INF/xml 파일 아래에 추가. 다른 설정 파일이 누락 되었습니까? 아니면 그냥 다른 것?
는 이미 ... LoggedInterceptor하지만 아무것도 변경에 @Priority 주석을 추가하려고
편집 : 나는 @Luciano 반 데르 Veekens로 LoggedInterceptor에 logget 주석을 추가 말했지만 아무것도
나는 그것을 추가했다. 그러나 아무것도 바뀌지 않았다. .. 그 밖의 무엇인가? –
@MarcoCastano 인터셉터는 응용 프로그램 서버에 배포 된 EJB에서만 작동합니다. –
@LucianVanDerVeekens ok 그래서 잘못 생각했습니다 ... 시간 내 주셔서 감사합니다 ...이 경우 메소드 실행 전후에 실행할 수있는 것이 있는지 알고 있습니다. 방법? –