Java專案效能監控和調優工具-Javamelody
監控效果圖見本文結尾部分.
3.在web.xml中配置filter:
- <filter>
- <filter-name>monitoring</filter-name>
- <
- <init-param>
- <param-name>log</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <listener>
- <listener-class>net.bull.javamelody.SessionListener</listener-class>
- </listener>
例如:http://127.0.0.1:8080/myproj/monitoring
至此,基本配置已完成,可以進行簡單的效能監控,下面配置是javamelody與struts2和spring3的整合配置:
5.javamelody和struts2整合時配置:- <packagename="base"namespace="/"extends="struts-default">
- <result-types>
- <result-typename="json"class="org.apache.struts2.json.JSONResult"/>
- </result-types>
- <interceptors>
- <!-- javamelody -->
- <interceptorname="monitoring"class="net.bull.javamelody.StrutsInterceptor"/>
- <interceptor-stackname="myStack">
- <interceptor-refname="monitoring"/>
- <!--
- struts預設的攔截器
- -->
- <interceptor-refname="defaultStack"/>
- </interceptor-stack>
- </interceptors>
- <default-interceptor-refname="myStack"/>
- <packagename="example"namespace="/"extends="base">
- <actionname="student_*"class="studentAction"method="{1}">
- <resultname="input">/pub_error.jsp</result>
- </action>
- </package>
6.javamelody與Spring整合:
spring的配置檔案中配置:
- <beanid= "facadeMonitoringAdvisor"class="net.bull.javamelody.MonitoringSpringAdvisor">
- <propertyname ="pointcut">
- <beanclass="org.springframework.aop.support.JdkRegexpMethodPointcut">
- <propertyname ="pattern"value="com.proj.*.service.*"/><!--正則表示式-->
- </bean>
- </property>
- </bean>
方式一,web.xml中加入如下配置:
<context-param>
<param-name> contextConfigLocation</param-name>
<param-value>
classpath:applicationContext*.xml<!--Spring配置檔案-->
classpath:net/bull/javamelody/monitoring-spring.xml<!--和spring整合時新增-->
</param-value>
</context-param>
方式二,在spring.xml中加入如下配置:
<import resource="classpath:net/bull/javamelody/monitoring-spring.xml" />
7.如果你的所有spring管理的bean都實現了介面,用步驟6中的配置一切OK,但如果有些bean沒有實現介面,使用步驟6中的配置將會出錯.
則將步驟6中的配置改為(這樣將使用cglib代理):
spring配置檔案中配置:
<bean id= "facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor" >
<property name ="pointcut" >
<bean class="org.springframework.aop.support.JdkRegexpMethodPointcut" >
<property name ="pattern" value="com.proj.*.service.*" /><!--正則表示式-->
</bean>
</property>
</bean>
方式一,web.xml中加入如下配置:
<context-param>
<param-name> contextConfigLocation</param-name>
<param-value>
classpath:applicationContext*.xml<!--Spring配置檔案-->
classpath:net/bull/javamelody/monitoring-spring-aspectj.xml<!--和spring整合時新增-->
</param-value>
</context-param>
方式二,在spring.xml中加入如下配置:
<import resource="classpath:net/bull/javamelody/monitoring-spring-aspectj.xml" />
8.在專案中經常這樣得到泛型類:
- private Class<T> entityClass = (Class<T>) ((ParameterizedType) getClass()
- .getGenericSuperclass()).getActualTypeArguments()[0];
- private Class<T> entityClass = (Class<T>) getSuperClassGenricType(this
- .getClass(), 0);
- publicstatic Class<?> getSuperClassGenricType(Class<?> clazz, int index)
- throws IndexOutOfBoundsException {
- Type genType = clazz.getGenericSuperclass();
- if (!(genType instanceof ParameterizedType)) {
- return Object.class;
- }
- Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
- if (index >= params.length || index < 0) {
- return Object.class;
- }
- if (!(params[index] instanceof Class<?>)) {
- return Object.class;
- }
- return (Class<?>) params[index];
- }
9.javamelody快取檔案的清除:預設路徑一般在tomcat_home/temp/javamelody中.
10.如果需要將結果匯出為pdf,只要在專案中引用iText.jar即可自動加上匯出pdf的連結.
11.javamelody與Quartz整合需要配置:
- <beanid="quartzScheduler"class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <propertyname="exposeSchedulerInRepository"value="true"/>
- ...
- </bean>
web.xml中配置,以日誌記錄為例,如下配置將開啟info級別的日誌記錄:
- <filter>
- <filter-name>monitoring</filter-name>
- <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
- <init-param>
- <param-name>log</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
system-actions-enabled:預設為true,控制啟動或停止system actions garbage collector, http sessions, heap dump, memory histogram, process list, jndi tree, opened jdbc connections, database.
url-exclude-pattern:可配置正則表示式,排除一些url不監控.
http-transform-pattern,sql-transform-pattern,ejb-transform-pattern, spring-transform-pattern, guice-transform-pattern, error-transform-pattern, log-transform-pattern, job-transform-pattern, jsf-transform-pattern, struts-transform-pattern and jsp-transform-pattern :可配置正則表示式,用於合併javamelody統計資料.
storage-directory: 預設為以javamelody,tomcat為例,預設儲存路徑為TOMCAT_HOME/temp/javamelody
monitoring-path:預設為:/monitoring,可以更改為其他地址,例如改為/mo,則監控地址改為:http://<host>:<port>/projectname/mo
no-database:預設false,配置為true將不監控和資料有關的行為.
disabled:預設false,配置為true將不再監控.
更多內容請參考:http://code.google.com/p/javamelody/wiki/UserGuide
擴充套件部分:增加訪問許可權校驗
public class MiaoshaMonitoringFilter extends MonitoringFilter {
protected boolean isRequestAllowed(HttpServletRequest httpRequest) {
HttpSession session = httpRequest.getSession();
if (session == null) {
return false;
}
User user = (User) session.getAttribute(UserConstants.SEESSION_USER);
if(user==null){
return false;
}
return user.isAdmin();
}
}
效果圖:
以上文章轉自:http://blog.csdn.net/lk_blog/article/details/13760999點選開啟連結