2010-07-07 5 views
1

Я новичок в Spring aop, и я решил использовать aop для отслеживания времени выполнения класса Action Struts2. Я сделал следующее. Но при запуске приложения метод setter класса действия не называется. Вот мой код. конфигурации XML:Spring aop with struts2

<aop:aspectj-autoproxy/> 
<bean id="myAspect" class="abc.xyz.ActionClassAspect"/> 
<aop:config> 
    <aop:pointcut id="actionClassPointcut" expression="execution(public * abc.xyz.action.*.*(..)) 
     and !execution(public * abc.xyz.action.*Action.get*(..)) 
     and !execution(public * abc.xyz.action.*Action.set*(..))"/> 
    <aop:around pointcut-ref="actionClassPointcut" method="doActionClassProfilling"/> 
</aop:config> 

Формат:

public Object doActionClassProfilling(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { 
    long start = System.currentTimeMillis(); 
    Object returnValue = proceedingJoinPoint.proceed(proceedingJoinPoint.getArgs()); 
    long end = System.currentTimeMillis(); 
    System.out.println(proceedingJoinPoint.getClass()+" TIME: "+(end-start)); 
    return returnValue; 
} 

Класс действия:

private String userID, password; 
@Override 
public String execute() throws Exception { 
    try { 
     LoginService loginService = LoginService.getInstance();; 
     UserProfile userProfile = loginService.validateUser(userID, password); 
     Map<String, Object> sessionMap = ActionContext.getContext().getSession(); 
     sessionMap.put("USER_PROFILE", userProfile); 
     return SUCCESS; 
    } catch(Exception e) { 
     return ERROR; 
    } 
} 
public String getUserID() { 
    return userID; 
} 
public void setUserID(String userID) { 
    this.userID = userID; 
} 
public String getPassword() { 
    return password; 
} 
public void setPassword(String password) { 
    this.password = password; 
} 

Спасибо заранее.

+0

Если вы просто хотите время выполнения трека, использование перехватчика Struts2 было бы проще –

+0

Не просто отслеживать время выполнения класса действия. Я хочу отслеживать всю транзакцию. то есть. Из класса действия класса вызываемых служб и каждого числа DAO, вызываемых из этой службы, и времени выполнения этих слоев. – Maheshkumar

+0

Я хочу это как отдельный модуль. Coz Я удалю этот модуль во время производства. – Maheshkumar

ответ

1

У меня был такой выпуск, и This помог мне. Я заставил Spring AOP использовать прокси CGLIB, осознавая новые проблемы, которые это может создать. Теперь я могу посоветовать свои действия struts2!