Ola Pessoal !!
To usando o AspectJ para o Eclipse. Fiz uma aplicação de teste usando o projeto dom Aspect e rodando dentro do Eclipse funcionou normalmente. Entom gerei um jar dos Aspect e testei na web (num servidor WebSphere 4) e nom funcionou. Pergunta: existe alguma configuração para funcionar o Aspect na Web ou no websphere ?
Abaraços
Thomás
Você colocou o arquivo .jar do AspectJ lá na pasta lib da sua aplicação?
Não dar nenhum erro de exceção
Vou explicar melhor :
Criei uma classe (PTMManagerJ.java) e um Aspect (PTMAspect.aj) rodando o PTMManagerJ pelo eclipse o aspecto funciona, empacotei o aspect e a classe (num jar) e coloquei no WEB-INF/lib da minha aplicação chame a classe PTMManagerJ dentro de um Action do Struts e o aspect não foi executado !!!
Você colocou o aspectjrt.jar lá no lib da sua aplicação? O aspecto não funciona porque não está sendo chamado ou porque dá uma exceção?
Cole o código dos dois aí.
Sim !! O jar do aspect está no WEB-INF/lib da minha aplicação
– Código Java
public class PTMManagerJ {
public PTMManagerJ() {
}
public static void main(String args[]) {
PTMManagerJ managerJ = new PTMManagerJ();
try {
managerJ.testeMetodo();
managerJ.testeMetodo2();
} catch (Exception e) {
}
}
public void testeMetodo() throws Exception {
System.out.println("testeMetodo");
throw new Exception("testeMetodo");
}
public void testeMetodo2() throws Exception {
System.out.println("testeMetodo2");
throw new Exception("testeMetodo2");
}
}
– Código Aspect
public aspect PTMAspect {
pointcut testeMetodo() : call(* PTMManagerJ.testeMetodo());
before() :testeMetodo() {
System.out.println("Antes de Executar o testemetodo");
}
after() :testeMetodo() {
System.out.println("Depois de Executar o testemetodo");
}
after() throwing(Exception e): target(PTMManagerJ) && call(void testeMetodo()) {
System.out.println("Excepion no metodo no testemetodo");
}
}
– Struts Action
O DefaultAction é uma classe que eu implementei a partir do Action do Struts
public class ServicoEmsAction extends DefaultAction {
public ActionForward executeForm(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
PTMManagerJ managerJ = new PTMManagerJ();
managerJ.testeMetodo();
return mapping.getInputForward();
}
}
EDIT (Thingol) - Pus os tags [ code ] para você.
Quem é DefaultAction? Herda de quem? Porque o método não é execute? Esse Action vem de DispatchAction?
Essa classe DefaultAction não existe no Struts.
Não esquenta com essa classe ela herda do Action normal
Pois se ela heda de Action deveria implementar o método com o nome de execute, não executeForm.
Meu RELAXA !!! Esse Action funciona beleza entra normal eu só fiz uma implementação diferente pro Action para uma necessidade que tinha aki na empresa !!!
Então mude o System.out lá do seu aspecto pra o lançamento de uma exceção, porque o System.out do seu servidor pode não ser exatamente onde você está esperando que ele apareça. Ou então coloque um logger escrevendo em algum lugar específico.
Outra coisa, se você não explica como a sua aplicação se comporta, agente não tem com advinhar né.