原创作者: QuakeWang   阅读:21334次   评论:25条   更新时间:2011-05-26    
项目名称: Jwebap
发起时间: 2007年11月
网站:http://jwebap.sourceforge.net
代码托管:http://www.sourceforge.net/projects/jwebap

项目介绍:
Jwebap是一个面向J2EE应用,基于jdk1.4以上环境的profiling工具。你可以应用它对系统内部method,jdbc & http 的执行情况进行监控和统计,然后通过jwebap提供的Web控制台查看它们。Jwebap不仅可以应用于测试和开发系统,同样由于它部署非常简单,同时高效,几乎没有额外的开销,使得它可以应用于生产系统,这对寻找系统瓶颈非常有帮助。


产品信息:
运行平台: 操作系统无关(OS Independent)
开发语言: Java
开源协议: Apache License V2.0

项目成员:
俞立德 软件工程师 广州


是什么促使你们发起/开始这个项目?
最初,在06年底由于要帮助几个大型项目进行性能上的优化。在此之前,公司已经投入的很多精力,却始终没有很好的解决系统的瓶颈问题。而阻扰我们的关键的问题,是在于无法很精确的定位到瓶颈所在,所以后面也试用了一些profiling工具,试图找到这些问题,但总是感觉不是很能满足要求,当时我试图自己实现监控系统的功能,在接下来的2个月试了很多办法,最终取得了不错的效果,虽然,那时做的东西还不能说是一个profiling 工具,他还太零散,太具侵入性,没有形成完整的设计,但是这些经验成了后面Jwebap的基础。

后面,我看到了许多项目中都有类似问题,迫切需要一个能真正解决问题的工具。所以,我决定把这些零散的经验汇总起来,尝试着开发一个通用的,无侵入的profiling工具,于是有了Jwebap,在07年11月,Jwebap终于有了第一个版本。


该项目面向哪些使用群体?
对于采用Java技术的项目来说,Jwebap都可以使用,它本身没有太多对环境的要求,也没有太多使用协议上的限制。另外,由于Jwebap的plugin体系的设计以及后面更多的plugin的发布,jwebap可以不仅仅用于解决系统性能问题,也同样可以提供给测试人员,开发人员,作为测试和debug的工具。

举个例子说明下用户使用您的软件能做什么?
目前,主要是针对性能监控方面。你可以简单的部署jwebap于你的系统,而只需修改2个配置文件。它可以对系统的jdbc连接,方法调用,http请求等数据进行监控,比如:你可以分析哪些sql执行的太慢,是哪段程序调用了它,哪些连接泄漏了,哪些类的方法执行过慢,哪些请求存在问题,等等,Jwebap提供了漂亮的视图界面把这些数据展现给你。

您在该项目中遇到的最大挑战是什么?
如何合理的安排开发计划和时间,毕竟工作已经占据了我大部分的时间。

您在该项目中认为获得成功的要素有哪些?
部署和使用非常的简单,同时环境无关,得益于Plugin体系的设计,jwebap能做到按需使用。

如果您能对项目进行修改,您会改善哪些地方?
Plugin的管理,字节码的生成,动态类加载机制,我想还有不少的改进空间,还有就是需要开发更强的Plugin。

你们把所有精力都投入在这个软件上,还是有其他的什么工作?
Jwebap主要是在业余时间进行开发,其他时间则放在了工作上。

那你们一般花多长时间在这个项目上?
不是特别多,工作不忙的时候,每周10小时或者更多。

你们用的开发环境是什么
OS: Windows
IDE: Eclipse

项目里程碑
0.5.2:jwebap对外发布的第一个版本
0.5.9:进行了整体改造,提供了基本的plugin管理,开发了jdbc,method,http三个plugin,提供了全新的视图界面等等。

其他人如何给你们提供建议?
主要通过邮件(yu-lead at 163 dot com)

对JavaEye的印象
JE是一个很好的交流和宣传的平台,这是很多其他类似网站都没有的,我很喜欢这里,同时,我也希望JE能够为开源项目,特别是国内的开源项目,提供更多的包括技术手段,交流,宣传和推广的支持。
评论 共 25 条 请登录后发表评论
25 楼 guoxiangfei 2011-08-08 19:50
出现下面错误,不知道问题在哪?请楼主指点下 问题 可能存在哪?

8/8/11 19:49:22:500 CST] 00000019 WebGroup      A   SRVE0169I: Loading Web Module: javahelpweb.
[8/8/11 19:49:22:562 CST] 00000019 VirtualHost   I   SRVE0250I: Web Module javahelpweb has been bound to default_host[*:9080,*:80,*:9443,*:5060,*:5061,*:443].
[8/8/11 19:49:22:578 CST] 00000019 WebGroup      A   SRVE0169I: Loading Web Module: cb_bank_web.
[8/8/11 19:49:22:578 CST] 00000019 ComponentName W   CNTR0063W: A reference to an EJB could not be found in the deployment descriptor for the WebApp or EnterpriseBean with the display name "cb_bank_web":WEB-INF/web.xml#EjbRef_1288528145823. The EJB may have specified binding information that is not valid.
[8/8/11 19:49:22:593 CST] 00000019 ComponentName W   CNTR0063W: A reference to an EJB could not be found in the deployment descriptor for the WebApp or EnterpriseBean with the display name "cb_bank_web":WEB-INF/web.xml#EjbRef_1296836998098. The EJB may have specified binding information that is not valid.
[8/8/11 19:49:22:593 CST] 00000019 WebApp        E   [Servlet Error]-[Failed to load listener: org.jwebap.core.JwebapListener]: java.lang.ClassNotFoundException: org.jwebap.core.JwebapListener
at
com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:502)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:403)
at java.lang.ClassLoader.loadClass(ClassLoader.java:605)
at java.beans.Beans.instantiate(Beans.java:202)
at java.beans.Beans.instantiate(Beans.java:63)
at com.ibm.ws.webcontainer.webapp.WebApp.loadListener(WebApp.java:1485)
at com.ibm.ws.webcontainer.webapp.WebApp.loadLifecycleListeners(WebApp.java:1409)
at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationStart(WebApp.java:426)
at com.ibm.ws.wswebcontainer.webapp.WebApp.initialize(WebApp.java:250)
at com.ibm.ws.wswebcontainer.webapp.WebGroup.addWebApplication(WebGroup.java:93)
at com.ibm.ws.wswebcontainer.VirtualHost.addWebApplication(VirtualHost.java:162)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApp(WebContainer.java:673)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApplication(WebContainer.java:626)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:335)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:551)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1250)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1140)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:569)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:819)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:921)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2100)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
24 楼 guoxiangfei 2011-08-08 19:48
出现下面错误,不知道问题在哪?请楼主指点下 问题 可能存在哪?

8/8/11 19:49:22:500 CST] 00000019 WebGroup      A   SRVE0169I: Loading Web Module: javahelpweb.
[8/8/11 19:49:22:562 CST] 00000019 VirtualHost   I   SRVE0250I: Web Module javahelpweb has been bound to default_host[*:9080,*:80,*:9443,*:5060,*:5061,*:443].
[8/8/11 19:49:22:578 CST] 00000019 WebGroup      A   SRVE0169I: Loading Web Module: cb_bank_web.
[8/8/11 19:49:22:578 CST] 00000019 ComponentName W   CNTR0063W: A reference to an EJB could not be found in the deployment descriptor for the WebApp or EnterpriseBean with the display name "cb_bank_web":WEB-INF/web.xml#EjbRef_1288528145823. The EJB may have specified binding information that is not valid.
[8/8/11 19:49:22:593 CST] 00000019 ComponentName W   CNTR0063W: A reference to an EJB could not be found in the deployment descriptor for the WebApp or EnterpriseBean with the display name "cb_bank_web":WEB-INF/web.xml#EjbRef_1296836998098. The EJB may have specified binding information that is not valid.
[8/8/11 19:49:22:593 CST] 00000019 WebApp        E   [Servlet Error]-[Failed to load listener: org.jwebap.core.JwebapListener]: java.lang.ClassNotFoundException: org.jwebap.core.JwebapListener
at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:502)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:403)
at java.lang.ClassLoader.loadClass(ClassLoader.java:605)
at java.beans.Beans.instantiate(Beans.java:202)
at java.beans.Beans.instantiate(Beans.java:63)
at com.ibm.ws.webcontainer.webapp.WebApp.loadListener(WebApp.java:1485)
at com.ibm.ws.webcontainer.webapp.WebApp.loadLifecycleListeners(WebApp.java:1409)
at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationStart(WebApp.java:426)
at com.ibm.ws.wswebcontainer.webapp.WebApp.initialize(WebApp.java:250)
at com.ibm.ws.wswebcontainer.webapp.WebGroup.addWebApplication(WebGroup.java:93)
at com.ibm.ws.wswebcontainer.VirtualHost.addWebApplication(VirtualHost.java:162)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApp(WebContainer.java:673)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApplication(WebContainer.java:626)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:335)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:551)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1250)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1140)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:569)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:819)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:921)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2100)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
23 楼 fengyuleidian3 2011-08-04 11:38
wen5566 写道
谁有它的使用文档,有就发到759433683@qq.com邮箱,谢谢!

king88886@163.com
22 楼 wen5566 2011-07-17 18:39
谁有它的使用文档,有就发到759433683@qq.com邮箱,谢谢!
21 楼 ruyi8207ATsina.com 2011-05-24 17:04
下载了,正在找相关的资料和工具呢,有没有分析指南之类的引导性资料啊
20 楼 zgxzowen 2011-05-24 11:05
网站访问不了
19 楼 NSCoffee 2011-05-09 01:11
貌似服务器不稳定啊 网站访问不了。。
18 楼 pior 2011-05-08 17:31
wangguan_xd 写道
hi,貌似http://jwebap.sourceforge.net 访问不了

是的`
17 楼 fantasycs 2011-05-05 13:47
34982442 写道
恩,我有用这个,不过发现有些Bug所以就没用了。提交参数会被拦截变成乱码。。。。。。


编码问题简单,继承org.jwebap.plugin.tracer.http.DetectFilter重写编码为自己请求参数的编码格式。

配置改成自己的Filter,解决问题。

<filter-name>PageDetectFilter</filter-name>
<filter-class>com.th.cip.web.filter.CipDetectFilter</filter-class>
<init-param>
    <param-name>charset</param-name>
    <param-value>UTF-8</param-value>
</init-param>

代码:

* 编码纠正
* @author 王文成
* @version 1.0
* @since 2011-5-5
*/
public class CipDetectFilter extends DetectFilter{

private String charset;

@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.charset=filterConfig.getInitParameter("charset");
super.init(filterConfig);
}


@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException,
ServletException {
request.setCharacterEncoding(charset);
super.doFilter(request, response, filterChain);
}
}
16 楼 joliny 2011-05-02 16:31
是不是不支持jdk6还是别的原因我的都是注入失败!!
15 楼 shishangzuiniubi 2011-04-29 10:39
我有用这个,不过发现有些Bug所以就没用了。提交参数会被拦截变成乱码。。。。。。
+1
14 楼 wangguan_xd 2011-04-26 15:47
hi,貌似http://jwebap.sourceforge.net 访问不了
13 楼 f5coder 2009-08-10 12:20
很不错的东西,原来要监控的目标是要设置一下的。问题都解决了,QuakeWang 辛苦!
12 楼 f5coder 2009-08-10 11:28
问题
1 test.Test注入失败,但是找不到Test类
2 在监控管理界面中,只有http有数据,jdbc和method里没有数据
11 楼 edwin_chen 2009-08-05 09:59
10楼的兄弟,
你的问题似乎是由于配置tracer.jar路径的问题

你的jwebap.xml中
<plugin name="Tracer" ref="${ABSOLUTE_PATH}/tracer.jar"/>

这行不需要修改,只要把tracer.jar放到classpath下即可。
我估计是你修改了这个配置造成的。

不知是否对你有帮助
10 楼 luzl 2009-08-02 20:55
我试着用了怎么起不来呢,有用过的DaXia指点一下:
og4j:WARN No appenders could be found for logger (org.apache.commons.betwixt.XMLIntrospector).
log4j:WARN Please initialize the log4j system properly.
org.jwebap.cfg.exception.PluginDefLinkedException: plugin Tracer linked fail.
	at org.jwebap.cfg.model.PluginDefRef.getPluginDef(PluginDefRef.java:67)
	at org.jwebap.cfg.model.PluginDefRef.getComponentDefs(PluginDefRef.java:90)
	at org.jwebap.cfg.model.JwebapDef.getAllComponentDefs(JwebapDef.java:156)
	at org.jwebap.startup.Startup.startup(Startup.java:77)
	at org.jwebap.startup.Startup.startup(Startup.java:54)
	at org.jwebap.startup.JwebapListener.contextInitialized(JwebapListener.java:36)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.jwebap.cfg.exception.PluginDefNotFoundException: plugin def not exists: D:/eclipse/webdemo/lib/tracer.jar
	at org.jwebap.cfg.model.PluginDefRef.loadPluginDef(PluginDefRef.java:135)
	at org.jwebap.cfg.model.PluginDefRef.getPluginDef(PluginDefRef.java:65)
	... 20 more
Caused by: java.net.MalformedURLException: unknown protocol: d
	at java.net.URL.<init>(Unknown Source)
	at java.net.URL.<init>(Unknown Source)
	at java.net.URL.<init>(Unknown Source)
	at org.jwebap.cfg.model.PluginDefRef.loadAbsoluteDefFile(PluginDefRef.java:199)
	at org.jwebap.cfg.model.PluginDefRef.loadPluginDefFile(PluginDefRef.java:159)
	at org.jwebap.cfg.model.PluginDefRef.loadPluginDef(PluginDefRef.java:132)
	... 21 more
Aug 2, 2009 8:54:39 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 725 ms
Aug 2, 2009 8:54:39 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Aug 2, 2009 8:54:39 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
Aug 2, 2009 8:54:40 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Aug 2, 2009 8:54:40 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Aug 2, 2009 8:54:40 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/151  config=null
Aug 2, 2009 8:54:40 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1366 ms

9 楼 arcko 2009-07-27 17:38
Jwebap-UserGuide_en.pdf

第二页

configure  what  plugin  you  need  use

是不是应该为
     
need to use
8 楼 haiyupeter 2009-07-20 21:23
一定要支持国产开源的,你这个监控平台我一定会用。哈哈。。
7 楼 lucky16 2009-07-20 20:18
试试看!!!
支持国内开源软件!
6 楼 windlike 2009-07-20 16:30
难道你连chinese也认不得么?楼下的
5 楼 xrb2008 2009-07-20 16:08
不是国内的吗,为什么网站都是英语?
4 楼 lovit 2009-07-20 15:09
test.Test的监听部署失败,不过这样并不影响系统的运行 这是什么原因。
3 楼 yingwuhahahaha 2009-07-18 23:11
发现最近je在搞好多开源项目的介绍啊,这个挺有用
2 楼 wing_0 2009-05-14 19:20
哈哈!阿德,能在这里看到你文章,太好了!
1 楼 34982442 2009-05-14 15:06
恩,我有用这个,不过发现有些Bug所以就没用了。提交参数会被拦截变成乱码。。。。。。

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics