Ich habe ein Problem beim Versuch, Eclipse und Aspectj arbeiten für dynamische Web-Projekte. Ich suche nach Kompilierzeit, damit ich die Eclipse-Visualisierungsfunktionen verwenden kann.So aktivieren Sie das kompilieren-time aspectj Weben für Eclipse Embedded Tomcat
Ich habe die hier angegebenen Schritten folgen:
https://forums.oracle.com/forums/thread.jspa?messageID=8591748
mit Eclipse Indigo (3.7) mit der neuesten aspectj Eclipse-Plugin (2.1.3).
Die Schritte waren wie folgt:
[1] Erstellen grundlegende Servlet
//imports omitted
public class MyServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response){
PrintWriter out= null;
try {
out = response.getWriter();
out.write("hello from MyServlet");
} catch (IOException e) {
e.printStackTrace();
} finally {
if(out!=null)
out.close();
}
}
}
[2] In Servlet Entfaltungs discriptor (web.xml)
<?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>
</web-app>
[3] Create aspect
package com.myCompany;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public aspect MyServletAspect {
pointcut doGet() :
execution(public void MyServlet.doGet(HttpServletRequest,HttpServletResponse));
after() returning : doGet() {
System.out.println("Hello from doGet (via aspectj)");
}
}
Allerdings wenn ich das ausführen keine Würfel - der Aspekt läuft einfach nicht (Servlet schreibt auf Antwort, Aspekt auf Konsole). Ich habe etwas Ähnliches für ein reguläres Java-Projekt gemacht und das funktioniert gut.
Es gibt Richtlinien für das Hinzufügen von aop.xml in das META-INF-Verzeichnis der Web-App, dies funktionierte jedoch nicht für mich.
Unser Ziel ist es, aspectj nicht-invasiv in der Entwicklung über Eclipse für ein Nicht-Spring Framework (oder Maven) Projekt zu betreiben - das sollte einfach sein ... aber ich konnte es nicht funktionieren lassen.
Alle Vorschläge/Verweis auf Tutorial zum Kompilieren Weben für Web-Anwendungen in Eclipse wäre nützlich. Der App-Server ist in Tomcat 6 eingebettet (kann jedoch bei Bedarf auf Tomcat 7 aktualisiert werden).
Die Möglichkeit, die Entwicklungsumgebung zur Laufzeit zu optimieren, ohne den Produktionscode zu beeinträchtigen, wäre großartig - wenn es funktioniert. Antworten sehr geschätzt.
Danke dafür - aber arbeiten mit einem Pre-Spring-Legacy-System; Ein anderes Projekt wie Roo einzubinden, fühlt sich an wie Overkill. – Alex
Nein, Sie werden nur die Pom-Datei für Sie erstellen, da dies der schwierige Teil ist, da Sie den AspectJ-Compiler anstelle des Javac-Compilers ausführen müssen. Was am wahrscheinlichsten passiert, ist, dass Sie den AspectJ-Compiler nicht ausführen. –
Diese Antwort annehmend - auf Roo schauend, scheint es, Aspectj zu benutzen, um seine Magie zu machen. (http://static.springsource.org/spring-roo/reference/html/architecture.html#architecture-critical-technologies-aspectj). Der Vorschlag, ein generiertes Projekt für die Bibliotheksimporte und Projekteinstellungen zu extrahieren, ist gut. – Alex