Você está na página 1de 6

Configurando o Tomcat para AspectJ

Postado por mnaeem01 em 03 de novembro de 2010 Este post descreve: Como instalar o AspectJ no Eclipse IDE (verso 3.4.2). Como faz-lo funcionar em uma aplicao stand-alone. Como faz-lo funcionar no Tomcat em execuo dentro do enviornment desenvolvimento Eclipse. Como implant-lo (fora do Eclipse) no Tomcat com o projeto sendo um arquivo de guerra. referncias: AspectJ home page: http://www.eclipse.org/aspectj ***************** Como instalar o AspectJ no Eclipse IDE (verso 3.4.2): Ir para: http://eclipse.org/ajdt/downloads/ e nota que h um site de atualizao listado como: http://download.eclipse.org/tools/ajdt/35/update Em Eclipse, v para: eclipse-> Ajuda-> atualizaes-> software encontrar-> instalar-> busca de recursos-> new remoto site. Na caixa de dilogo, digite "aspectjForEclpise como um nome, e essa url (do acima): http://download.eclipse.org/tools/ajdt/34/dev/update reiniciar o Eclipse, verifique se o item de menu: file-> new-> aspectj existe. Se isso no acontecer, voc no instalar o plugin corretamente. Nota: Muitas verses do Eclipse tiver problemas para instalar plugins, como o descrito acima devido ao grupo Eclipse bagunar o utilitrio de atualizao em Eclipse. Voc ter que resolver essa questo por conta prpria se voc no pode obter o utilitrio de atualizao para o trabalho. ****************** Como faz-lo funcionar em uma aplicao stand-alone: Ns vamos criar um aspecto que imprime para o console sempre que a funo main () de um determinado classe chamado. Se ele for impresso para o console, a instalao funciona. Criar um novo projeto java (no um projeto tomcat) Crie a seguinte classe (para testar o aspecto ns vamos criar mais tarde).: Observe a sua em "com.mycompany" do pacote):

com.mycompany pacote; public class {MainMethodTestCase / construtor / pblico MainMethodTestCase (String [] args) { System.out.println ("MainTestCase () chamado normalmente"); } Clique direito sobre MainMethodTestCase, executado como um aplicativo. Verifique se ele imprime em 'MainTestCase () chamado normalmente "o console. public static void main (String [] args) { novo MainMethodTestCase (args); } } criar um novo aspecto atravs do arquivo-> novo-> AspectJ-> aspecto chamado MainMethodAspect no mbito do pacote com.mycompany dentro do Eclipse Coloque o seguinte contedo no arquivo aspecto: com.mycompany pacote; pblico aspecto MainMethodAspect { / / Para qualquer funo que que executa principal MainMethodTestCase do (String []) funo pointcut mainMethod (), execuo (public static void MainMethodTestCase.main (String [])); depois () Retorno: mainMethod () { System.out.println ("Ol a partir de AspectJ"); } } Verifique se voc ver uma seta em algum lugar na coluna da esquerda de ambos os arquivos. Isso indica que o aspecto tenha encontrado uma classe que ir aplicar-se. Select MainMethodTestCase.java, clique direito sobre ele, executado como um aplicativo. Verifique se este enviado para o console: "MainTestCase () chamado normalmente" "Ol a partir de AspectJ ' Como 'Ol de AspectJ' mostra AspectJ agora verificado como trabalhar. Observe que no h necessidade de um arquivo aop.xml para o acima (Um aop.xml ser necessrio para executar o aspecto no Tomcat tal como descrito mais tarde) Criando um projeto Tomcat que usa um servlet:

******************* Ns vamos precisar para criar esse projeto servlet para testar eventualmente um aspecto contra. Crie um projeto novo chamado Tomcat 'AspectjOnTomcatExample' Criar o seguinte servlet dentro do pacote com.mycompany: com.mycompany pacote; import java.io.IOException; importar java.io.PrintWriter; importar javax.servlet.http.HttpServlet; importao javax.servlet.http.HttpServletRequest; importar javax.servlet.http.HttpServletResponse; / para executar isso em um navegador: http://localhost:8080/AspectjOnTomcatExample/MyServlet / MyServlet public class HttpServlet {criar o seguinte arquivo web.xml na pasta WEBINF: public void doGet (HttpServletRequest request, response HttpServletResponse) { PrintWriter out = null; try { out = response.getWriter (); out.write ("Ol a partir de MyServlet"); } Catch (IOException e) { e.printStackTrace (); {} Finally if (out! = null) out.close (); } } } <? Xml version = "1.0" encoding = "ISO-8859-1"> <Web-app xmlns = "http://java.sun.com/xml/ns/j2ee" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation = "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version = "2.4"> <servlet> <servlet-name> MyServlet </ servlet-name>

<servlet-class> com.myCompany.MyServlet </ servlet-class> </ Servlet> <servlet-mapping> <servlet-name> MyServlet </ servlet-name> <url-pattern> / MyServlet / </ url-pattern> </ Servlet-mapping> Verifique na pasta <catalina_home> / conf / tomcat localhost voc tem um arquivo AspectjOnTomcatExamle.xml com algo como o seguinte contedo (Eclipse deve ter gerado-lo): </ Web-app> <Caminho Contexto = "AspectjOnTomcatExample /" reloadable = "true" docBase = "C: \ Arquivos de Programas \ Eclipse \ workspace \ AspectjOnTomcatExample" workdir = "C: \ Arquivos de Programas \ Eclipse \ workspace \ AspectjOnTomcatExample trabalho \" /> Inicie o tomcat em Eclipse, abrir um browser, e ir para o seguinte URL e verificar 'Ol de MyServlet' aparece no navegador: http://localhost:8080/AspectjOnTomcatExample/MyServlet Convertendo um projeto Tomcat em um projeto AspectJ ******************* selecione o cone do projeto, com o boto direito e selecione "Aspectj tools'-> 'converter a aspectj projeto Como faz-lo funcionar no Tomcat em execuo dentro do enviornment desenvolvimento Eclipse. Nota: voc pode usar o seguinte para remover a capacidade aspectj (Para situaes onde voc deseja implantar o projeto na produo sem aspectj): "Aspectj tools'-> 'remove capacidade aspectj' *********************** Criar um novo aspecto no pacote com.mycompany chamado MyServletAspect com o seguinte contedo: Verifique se voc ver uma seta em algum lugar na coluna da esquerda de ambos os arquivos (MyServlet.java, MyServletAspect.aj). Isto indica que o aspecto tem encontrado uma classe que se ir aplicar-se a. com.mycompany pacote;

importao javax.servlet.http.HttpServletRequest; importar javax.servlet.http.HttpServletResponse; pblico aspecto MyServletAspect { pointcut doGet (), execuo (MyServlet.doGet public void (HttpServletRequest, HttpServletResponse)); depois () Retorno: doGet () { System.out.println ("Ol a partir de doGet (via aspectj)"); } } **************************** Criao do arquivo aop.xml: Se voc executar o tomcat, neste ponto, chamar um navegador e executar o servlet (como foi feito acima), o aspecto no ser executado. Isso porque voc no tem um arquivo aop.xml. Em Eclipse, dentro do seu projeto, localize a pasta "src" e criar uma pasta METAINF crie um arquivo aop.xml sob src / META-INF da pasta do projeto com o seguinte contedo.: <! DOCTYPE aspectj PBLICO "- / / AspectJ / / DTD / / EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd"> <- OPTIONS = "-verbose-showWeaveInfo-xset: weaveJavaxPackages = false" -> <aspectj> <weaver> <include within="com. "/> </ Tecelo> <aspects> <aspect name="com.myCompany.MyServletAspect"/> </ Aspectos> </ Aspectj> pacote "que corresponde ao que a sua procura. Nota: o acima diz que o MyServletAspect ser aplicada para todas as classes no mbito da OCM ". Reinicie o tomcat, chame um navegador, executar o servlet, e verificar o aspecto imprime 'Ol de doGet (via aspectj)' para o console. Como implant-lo fora do Eclipse no Tomcat com o projeto como um arquivo de guerra: ******************** Selecione o cone do projeto, clique direito sobre ela, selecione properties-> tomcat-> exportar as configuraes de guerra:

e digite isto: C: \ Arquivos de programas \ tomcat \ webapps \ Tomcat5.5.27 \ AspectjOnTomcatExample.war Localize na pasta conf / localhost <catalina_home> o Arquivo AspectjOnTomcatExamle.xml com algo como o seguinte contedo (Eclipse deve ter gerado-lo): <Caminho Contexto = "AspectjOnTomcatExample /" reloadable = "true" docBase = "C: \ Arquivos de Programas \ Eclipse \ \ workspace \ AspectjOnTomcatExample" workdir = "C: \ Arquivos de Programas \ Eclipse \ \ workspace \ AspectjOnTomcatExample trabalho \" /> Remover enteries Docbase e workdir assim Tomcat vai olhar para o cdigo no arquivo de guerra ao invs de volta sob Eclipse. Reinicie o tomcat, chame um navegador, executar o servlet, e verificar o aspecto imprime 'Ol de doGet (via aspectj)' para o console. Notas: ********************** O plugin do eclipse teve o cuidado de converter o projeto em um projeto AspectJ. Portanto, no h necessidade de alterar qualquer dos arquivos sob a pasta tomcat (tais como CATALINA_HOME). Portanto, no h necessidade de adicionar o seguinte para a JVM em qualquer lugar: -Javaagent: C: \ Arquivos de programas \ Tomcat \ Tomcat5.5.27 \ common \ lib \ aspectjweaver.jar Portanto, no h necessidade de adicionar os seguintes arquivos JAR para qualquer projeto Eclipse ou para o tomcat pasta (CATALINA_HOME): aspectjrt.jar aspectjtools.jar aspectjweaver.jar org.aspectj.matcher Primavera-tomcat-weaver.jar