想在web应用的服务器端避免编写太多一样的日志输出代码。我们一般采用aop技术,现在比较流行的是在sping中配置aop功能,网上很多相关资料。在不使用spring等容器注入技术的情况下,我们一般采用aspectj技术。
在此我分享一下采用aspectj输出日志时的运行环境和开发环境的配置。
下载相关包
aspectj的核心包 | http://eclipse.org/aspectj/downloads.php | 下载后解压缩,在目录中有aspectjrt.jar,aspectjweaver.jar(还有一些其他的,我们暂时只用这两个) |
eclipse插件(ajdt) | http://www.eclipse.org/ajdt/downloads/ | 下载与eclipse相配的ajdt |
我使用的开发环境:
eclipse3.7
tomcat6.0.18
jdk1.6.12
配置开发环境
1,将下载的ajdt作为插件加入到eclipse中。
2,将aspectjrt.jar加到工程的库里面。
3,在tomcat的JVM设置中加入如下配置。
-javaagent:"C:\JAVA\APPServer\Tomcat\apache-tomcat-6.0.18\lib\aspectjweaver.jar"
为上面下载的aspectjweaver.jar的绝对路径。
4,编写aop.xml(文件名固定)
<?xml version="1.0" encoding="UTF-8"?>
<aspectj>
<aspects>
<concrete-aspect name="com.test.framework.aspect._Smsf_Aspect"
extends="com.test.framework.aspect.AbstractAspect">
<pointcut name="runAccess"
expression="
execution(* com.test.framework.web.action.*.*(..)) ||
execution(* com.test.demo.web.handle.*.*(..)) ||
execution(* com.test.demo.dao.impl.*.*(..))"/>
</concrete-aspect>
</aspects>
</aspectj>
其中的name属性是一个由系统自动产生的类,不需要特意创建。
5,将aop.xml配置到java的/src/META-INF/中,确保编译后的路径为:WEB-INF/classes/META-INF/aop.xml.
6,编写步骤4中extends制定的虚拟类。
@Aspect
public abstract class AbstractAspect {
// abstract pointcut: no expression is defined
@Pointcut
abstract void runAccess();
@Before("runAccess()")
public void before(JoinPoint jp) {
LogLogic.writeMethodStartlog(jp);
}
@After("runAccess()")
public void after(JoinPoint jp) {
LogLogic.writeMethodEndlog(jp);
}
}
7,运行代码。
配置运行环境
在开发环境中打好的war包放在web服务器(tomcat)中运行时,我们只需将启动tomcat的java命令中加上步骤3中所述的参数。
更改catalina.bat文件的JAVA_OPTS属性:
set JAVA_OPTS=%JAVA_OPTS% -javaagent:"C:\JAVA\APPServer\Tomcat\apache-tomcat-6.0.18\lib\aspectjweaver.jar"
用startup.bat启动服务器即可。
分享到:
相关推荐
9. `org.springframework.instrument.tomcat-3.0.0.RELEASE`:支持Tomcat服务器的连接池集成,主要用于类加载器的代理和服务器端性能优化。 10. `org.springframework.instrument-3.0.0.RELEASE`:提供了服务器端的...
- `spring-instrument` 和 `spring-instrument-tomcat`: 用于服务器端的类装载器增强和Tomcat服务器的特殊支持。 在实际项目中,你需要根据具体需求选择引入这些包。通常,一个基本的SpringMVC项目至少需要`spring...
3. **tomcat-embed-core-8.5.31.jar**:这是一个Tomcat服务器的核心库,用于提供Java应用的嵌入式部署。这表明该工具可能基于Spring Boot或类似的框架,因为Spring Boot常使用内嵌的Tomcat来运行Web应用程序。 4. *...
6. **Web服务**:Spring 3.2.8提供了对SOAP和RESTful Web服务的支持,包括客户端和服务器端的实现。 7. **JSR-303/JSR-349 Bean Validation**:集成Bean Validation标准,允许开发者在JavaBeans中定义验证规则,并...
- 使用AspectJ、AspectWerkz等框架增强代码,实现日志记录、事务管理等横切关注点。 #### 24. **日志(Logging)和调度(Scheduling)** - Log4J用于日志记录,Quartz用于任务调度。 #### 25. **网络通信(JGroups)**...
13. **spring-instrument.jar**:提供了类加载器的工具和接口,主要用于服务器端的应用,如Tomcat,提升类的加载和监控能力。 14. **spring-amqp.jar**:提供了对AMQP(Advanced Message Queuing Protocol)的消息...
1. `startup.bat`:这是一个批处理脚本,通常用于启动SDP1.0.1的服务器端服务,使得工具能够运行在本地环境。 2. `sdp.mv.db`:这可能是SDP的主数据库文件,用于存储项目信息、用户设置等关键数据,可能是基于H2...
12. **spring-instrument.jar**:提供了类装载器工具,主要用于服务器端的类装载器增强,如Tomcat等。 13. **spring-test.jar**:包含了测试支持类,方便进行单元测试和集成测试,与JUnit和其他测试框架配合使用。 ...
6. **JSP和Servlet API**:Spring MVC依赖于Servlet容器(如Tomcat、Jetty)来运行,因此需要servlet-api和jsp-api的jar包,通常由Web应用服务器提供,但有时也需要在项目中显式声明。 7. **Jackson或Gson**:用于...
6. **Instrumentation**:提供了类加载器和代理相关的工具,主要用于服务器端的部署。 二、Spring 2.0-M1 特性 Spring 2.0-M1是一个里程碑版本,引入了多项改进和新特性: 1. **改进的DI**:引入了基于注解的依赖...
日志框架如Log4J可以帮助开发者记录应用程序运行过程中的关键信息,便于调试和监控。此外,还有许多其他有用的工具库,如Quartz(用于调度任务)、JGroups(用于集群通信)等。 #### 20. 使用主流的Java集成开发...
`org.springframework.instrument`和`org.springframework.instrument.tomcat`模块用于类加载器级别的字节码操作,通常在服务器端JVM上用于性能监控和优化。例如,这些模块可以用来在运行时对类进行增强,以便于收集...
16. **spring-instrument-4.2.6.RELEASE.jar**:提供了类加载器层面的工具,主要用于服务器端应用,如Tomcat。 17. **spring-instrument-tomcat-4.2.6.RELEASE.jar**:针对Tomcat的特定类加载器工具,增强Spring在...
- **内嵌式服务器**:支持内嵌Tomcat、Jetty等服务器,无需额外部署。 **优势**: - **简化开发**:开箱即用,大幅减少配置工作。 - **提高开发效率**:快速构建并启动项目。 - **易于集成**:支持多种技术和框架,...
熟悉Java Bean组件模型,了解其在JSP和服务器端的应用。 ### 5. 数据库连接与持久化 精通Java数据库连接(JDBC)API,了解不同的持久化/ORM(对象关系映射)框架如Hibernate、JDO、CocaBase、TopLink、iBatis等。...
9. `org.springframework.instrument.tomcat-3.1.0.M1.jar`: 专门针对Tomcat服务器的类加载器工具,用于服务器端的代理和性能优化。 10. `org.springframework.instrument-3.1.0.M1.jar`: 提供了对服务器的代理接口...
"Panaderia" 可能使用Spring Boot来快速构建服务,因为它简化了配置并提供了内置的Tomcat服务器。此外,Spring Data JPA可能用于数据库操作,Spring MVC可能用于构建Web界面。 4. **数据库连接**:面包店管理通常...