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