我在尝试使eclipse和aspectj适用于Dynamic Web Projects时遇到问题。我正在寻找编译时间编织,所以我可以使用Eclipse可视化功能。如何为Eclipse嵌入式Tomcat启用编译时aspectj编织
我已经按照这里的步骤:
https://forums.oracle.com/forums/thread.jspa?messageID=8591748
使用Eclipse靛蓝(3.7)与最新的AspectJ Eclipse插件(2.1.3)。
的步骤如下:
[1]建立基本的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]添加servlet来部署描述符(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]创建方面
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)");
}
}
然而,当我运行这个没有骰子 - 方面不运行(servlet写入响应,方面控制台)。我为一个普通的java项目做了类似的工作,并且工作正常。
我注意到有添加到aop.xml中的Web应用程序的META-INF目录指引,但是这并没有为我工作。
我们的目标是在非Spring框架(或Maven)项目中通过eclipse在开发过程中无损地运行aspectj - 这应该很容易......但我一直无法使其工作。
任何建议/参考教程编译时在蚀织为网络应用程序将是有益的。应用程序服务器是嵌入式Tomcat 6(但可以根据需要升级到Tomcat 7)。
来调整运行时的开发环境,在不影响产品的代码将是巨大的能力 - 如果它可以进行工作。 非常感谢的回应。
感谢此 - 但与春季遗留系统工作;堵塞像Roo这样的另一个项目就像是矫枉过正。 – Alex 2012-04-03 19:54:06
不,你只需要让它为你创建pom文件,因为这是棘手的部分,因为你需要运行AspectJ编译器而不是javac编译器。最有可能发生的是你没有运行AspectJ编译器。 – 2012-04-03 20:07:15
接受这个答案 - 看Roo它似乎使用Aspectj来发挥它的魔力。 (http://static.springsource.org/spring-roo/reference/html/architecture.html#architecture-critical-technologies-aspectj)。关于为图书馆进口和项目性质设置挖掘生成的项目的建议是一个很好的建议。 – Alex 2012-11-07 20:08:59