Configurando o Tomcat Para AspectJ

Preview:

Citation preview

Configurando o Tomcat para AspectJ Postado por mnaeem01 em 03 de novembro de 2010  

Este post descreve: Como instalar o AspectJ no Eclipse IDE (versão 3.4.2). Como fazê-lo funcionar em uma aplicação stand-alone. Como fazê-lo funcionar no Tomcat em execução dentro do enviornment desenvolvimento Eclipse. Como implantá-lo (fora do Eclipse) no Tomcat com o projeto sendo um arquivo de guerra.

referências: AspectJ home page:

http://www.eclipse.org/aspectj

***************** Como instalar o AspectJ no Eclipse IDE (versão 3.4.2):

Ir para: http://eclipse.org/ajdt/downloads/ e nota que há um site de atualização listado como: http://download.eclipse.org/tools/ajdt/35/update Em Eclipse, vá para: eclipse-> Ajuda-> atualizações-> software encontrar-> instalar-> busca de recursos-> new remoto site.

Na caixa de diálogo, 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 não acontecer, você não instalar o plugin corretamente.

Nota: Muitas versões do Eclipse tiver problemas para instalar plugins, como o descrito acima devido ao grupo Eclipse bagunçar o utilitário de atualização em Eclipse. Você terá que resolver essa questão por conta própria se você não pode obter o utilitário de atualização para o trabalho.

****************** Como fazê-lo funcionar em uma aplicação stand-alone:

Nós vamos criar um aspecto que imprime para o console sempre que a função main () de um determinado classe é chamado. Se ele for impresso para o console, a instalação funciona.

Criar um novo projeto java (não um projeto tomcat) Crie a seguinte classe (para testar o aspecto nós vamos criar mais tarde).: Observe a sua em "com.mycompany" do pacote):

com.mycompany pacote;

public class {MainMethodTestCase

/ construtor / público 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 através do arquivo-> novo-> AspectJ-> aspecto chamado MainMethodAspect no âmbito do pacote com.mycompany dentro do Eclipse Coloque o seguinte conteúdo no arquivo aspecto:

com.mycompany pacote;

público aspecto MainMethodAspect {

/ / Para qualquer função que que executa principal MainMethodTestCase do (String []) função pointcut mainMethod (), execução (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 não há necessidade de um arquivo aop.xml para o acima (Um aop.xml será necessário para executar o aspecto no Tomcat tal como descrito mais tarde) Criando um projeto Tomcat que usa um servlet:

*******************

Nós 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; importação 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 WEB-INF:

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 conteúdo (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 botão direito e selecione "Aspectj tools'-> 'converter a aspectj projeto Como fazê-lo funcionar no Tomcat em execução dentro do enviornment desenvolvimento Eclipse.

Nota: você pode usar o seguinte para remover a capacidade aspectj (Para situações onde você deseja implantar o projeto na produção sem aspectj):

"Aspectj tools'-> 'remove capacidade aspectj'

***********************

Criar um novo aspecto no pacote com.mycompany chamado MyServletAspect com o seguinte conteúdo: 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;

importação javax.servlet.http.HttpServletRequest; importar javax.servlet.http.HttpServletResponse;

público aspecto MyServletAspect {

pointcut doGet (), execução (MyServlet.doGet public void (HttpServletRequest, HttpServletResponse));

depois () Retorno: doGet () { System.out.println ("Olá a partir de doGet (via aspectj)"); }

}

**************************** Criação do arquivo aop.xml:

Se você executar o tomcat, neste ponto, chamar um navegador e executar o servlet (como foi feito acima), o aspecto não será executado. Isso é porque você não tem um arquivo aop.xml.

Em Eclipse, dentro do seu projeto, localize a pasta "src" e criar uma pasta META-INF crie um arquivo aop.xml sob src / META-INF da pasta do projeto com o seguinte conteúdo.:

<! DOCTYPE aspectj PÚBLICO "- / / AspectJ / / DTD / / EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">

<- OPTIONS = "-verbose-showWeaveInfo-xset: weaveJavaxPackages = false" -> <aspectj> <weaver> <include within="com. "/> </ Tecelão> <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 configurações 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 conteúdo (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 código no arquivo de guerra ao invés 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, não há necessidade de alterar qualquer dos arquivos sob a pasta tomcat (tais como CATALINA_HOME). Portanto, não 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, não 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