阅读更多

22顶
0踩

编程语言
项目名称: 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能够为开源项目,特别是国内的开源项目,提供更多的包括技术手段,交流,宣传和推广的支持。
22
0
评论 共 25 条 请登录后发表评论
25 楼 czlonly 2008-10-13 12:40
我按着doc在我的程序里搭建好了,启动tomcat之后,进入系统,不论怎么操作都没出现什么监控页面啊,这是怎么回事?
24 楼 BaSaRa 2008-09-13 21:14
不知道Jwebap中的性能瓶颈是指什么,大概看看好像也是对时间进行监控(没有细看,说错的话多包涵)

不知道有没有对内存消耗进行监控?

对于MethodComponent,能不能扣除网络连接的时间?我只想知道程序运行的效率而已...
23 楼 leadyu 2008-09-13 17:51
引用
很希望能看到这个项目广为流传的一天。但是拿下来一看就知道这个项目有这国内项目的典型特点:没文档。
这不是一个很好笑的问题,而是一个关乎软件生命的问题,总不能要求每个用户都去看源码来发掘这个工具有什么惊人的表现吧。
纵观当前取得成功的开源项目,无一不是拥有丰富、细致的文档和活跃的社区,而国人对文档的重视程度可以说是相当的差,即便是商业产品,文档也是质量差、数量少(基本都是蒙混过关居多)。
我很佩服国内软件工作者可以在繁重工作压力之余尝试在开源软件领域有所作为,但是既然做就要做好,所以期待你们团队能给中国开源软件业带来惊喜!


很感谢你对项目的关心,应该说不是不重视文档,而是非常重视,但是确实目前没有太多时间做到让大家满意,以后我会加强这块的时间投入
22 楼 leadyu 2008-09-13 17:48


引用
只不过用了他的框架系统处理会出现乱码,不知道怎么回事,后来就不敢再用了


这可冤枉我了,并不是jwebap造成乱码,而是jwebap的pagefilter会去获取请求的内容,而你的项目可能存在某个filter会去设置请求的编码为gbk,我们知道request的编码只有在第一次获取内容之前设置才有效,所以,假设jwebap的filter设置的比你的前,那么就造成你的filter失效了,自然乱码,解决也很简单,调下filter的顺序
21 楼 yueguangyuan 2008-09-12 23:15
   很希望能看到这个项目广为流传的一天。但是拿下来一看就知道这个项目有这国内项目的典型特点:没文档。
   这不是一个很好笑的问题,而是一个关乎软件生命的问题,总不能要求每个用户都去看源码来发掘这个工具有什么惊人的表现吧。
   纵观当前取得成功的开源项目,无一不是拥有丰富、细致的文档和活跃的社区,而国人对文档的重视程度可以说是相当的差,即便是商业产品,文档也是质量差、数量少(基本都是蒙混过关居多)。
   我很佩服国内软件工作者可以在繁重工作压力之余尝试在开源软件领域有所作为,但是既然做就要做好,所以期待你们团队能给中国开源软件业带来惊喜!
20 楼 hetylei 2008-09-12 16:00
引用
引用
试用了一下 不错

方法监控好像不能监控到子包

数据库监控JNDI那块没搞明白


意思就是配置本地的ConnectionFactory之类的类作为driver-clazz,以此监控远程数据源。比如你采用spring,并且采用jndi数据源,那么可以配置jndiObjectFactory作为driver-clazz

引用

超级喜欢俞立德,haha ~~~只不过用了他的框架系统处理会出现乱码,不知道怎么回事,后来就不敢再用了


确实有乱码的问题 ,提交的数据经过Jwebap的filter处理后 再到其它filter里就会有问题
19 楼 zhuyx808 2008-09-12 15:30
我用了这个啊,很好用,可惜统计没出来
18 楼 34982442 2008-09-12 15:13
超级喜欢俞立德,haha ~~~只不过用了他的框架系统处理会出现乱码,不知道怎么回事,后来就不敢再用了
17 楼 welcomyou 2008-09-12 11:34
引用
glassbox只能用Tomcat?


没有啊,Weblogic上也可以用的,但是在Solaris上有些问题,一直没解决。
16 楼 leadyu 2008-09-12 10:39
引用
yuanye218 2008-09-12 08:59
我在项目里也使用了这个工具,但是只有在第一次进去的时候可以看见监控sql的控制台有数据,并且数据不再更新,关闭页面然后重新打开jwebap,发现sql控制台没有数据了,但是http请求的控制台还有数据,这是为什么?


已给你回了站内短信
15 楼 leadyu 2008-09-12 10:37
引用
试用了一下 不错

方法监控好像不能监控到子包

数据库监控JNDI那块没搞明白


意思就是配置本地的ConnectionFactory之类的类作为driver-clazz,以此监控远程数据源。比如你采用spring,并且采用jndi数据源,那么可以配置jndiObjectFactory作为driver-clazz
14 楼 leadyu 2008-09-12 10:34
引用
只能对所在的工程监控,能改成对同一个服务器下的所有工程监控吗?


你可以在每个application部署,通过访问不同地址的jwebap界面监控不同的application
13 楼 leadyu 2008-09-12 10:32
引用
试了下,tomcat起不来,报这个错。是因为没有dtd吗? 该怎么改啊

Java代码
org.springframework.beans.factory.BeanDefinitionStoreException: Line 2 in XML document from ServletContext resource [/WEB-INF/jwebap.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Document root element "jwebap", must match DOCTYPE root "null".  
org.xml.sax.SAXParseException: Document root element "jwebap", must match DOCTYPE root "null". 

org.springframework.beans.factory.BeanDefinitionStoreException: Line 2 in XML document from ServletContext resource [/WEB-INF/jwebap.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Document root element "jwebap", must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "jwebap", must match DOCTYPE root "null".


这个是不是spring,试图去读取jwebap的配置造成,你看看spring配置了哪些资源文件
12 楼 yuanye218 2008-09-12 08:59
我在项目里也使用了这个工具,但是只有在第一次进去的时候可以看见监控sql的控制台有数据,并且数据不再更新,关闭页面然后重新打开jwebap,发现sql控制台没有数据了,但是http请求的控制台还有数据,这是为什么?
11 楼 hetylei 2008-09-12 08:43
glassbox只能用Tomcat?
10 楼 lichwoo 2008-09-12 00:11
只能对所在的工程监控,能改成对同一个服务器下的所有工程监控吗?
9 楼 welcomyou 2008-09-11 20:29
不知道跟glassbox比,这个有什么优势?
8 楼 mazzystar 2008-09-11 18:18
试了下,tomcat起不来,报这个错。是因为没有dtd吗? 该怎么改啊

org.springframework.beans.factory.BeanDefinitionStoreException: Line 2 in XML document from ServletContext resource [/WEB-INF/jwebap.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Document root element "jwebap", must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "jwebap", must match DOCTYPE root "null".


7 楼 hetylei 2008-09-11 17:33
问题不少啊
excludeUrls 不支持大小写
6 楼 mazzystar 2008-09-11 17:33
以前从来没用过类似的工具 试用一下

发表评论

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

相关推荐

  • 跨平台的socket库,windows-linux-socket

    跨平台的socket库,windows-linux-socket

  • unix/linux socket设置非阻塞

    UNIIX/linux下SOCKET主要是同步的,但有阻塞和非阻塞两种方式。 阻塞方式定义与前面定义相同,要解决阻塞有两种方法: 一种是设置SOCKET属性,设置为非阻塞(fcntl()函数), sockfd = socket(AF_INET, SOCK_STREAM, 0);  fcntl(sockfd, F_SETFL, O_NONBLOCK);    通过设置套接字为非阻塞,你能够

  • Unix/Linux编程:socket阻塞式读写再理解

    建立连接的根本目的是为了数据的收发。拿我们常用的网络场景举例子,我们在浏览商品或者购买货品的时候,并不会感觉到网络连接的存在,但是我们可以真切感觉到数据在客户端和服务端有效的传送,比如浏览商品信息的不断刷新,购买货品时显式购买成功的消息等。 首先我们来看一下发送数据 发送数据 发送数据时常用的有三个函数,分布是write、send、sendmsg ssize_t write (int socketfd, const void *buffer, size_t size) ssize_t send (int s

  • UNIX 原始Socket 的缺陷

     原始套接口有很多缺陷:易错、过度复杂、不可移植……看下面的例子: 0 // This example contains bugs! Do not copy this example! 1 #include 2 #include 3 4 const int PORT_NUM = 10000; 5 6 int echo server() 7 { 8  

  • 3.3 Windows Sockets 与 UNIX 套接口编程实例

    3.3 Windows Sockets 与 UNIX 套接口编程实例 下面是一个简单的基于连接的点对点实时通信程序.它由两部分组成,服务器在主机UNIX下 直接运行, 客户机在Windows下运行. 介绍 3.3.1 SERVER 由于SERVER是在UNIX下运行的,它对套接口的使用都是BSD的标准函数,程序也比较简 单, 只有一段程序,下面简要解释一下. 首先,建立自己的套接口

  • Unix和Windows跨系统通讯编程

    本文介绍了套接字(Socket)的基本概念及编程技术,并结合实例说明在Unix和Windows下如何用套接字实现客户/服务器方式的通讯编程。摘 要 本文介绍了套接字(Socket)的基本概念及编程技术,并结合实例说明在Unix和Windows下如何用套接字实现客户/服务器方式的通讯编程。关键词 Berkeley Sockets Windows Sockets 通讯编程 一、 前言  随着Inter

  • 跨进程通信: Unix Domain Socket 创建实例。 Windows和MacOS代码已适配兼容

    具体使用到的Socket方法介绍可以查看本文中的server和client的代码可以直接 复制粘贴到 Windows 或 MacOS 的命令行程序中直接运行。由于 Windows 平台下的创建文章比较少,所以创建了这个demo。可直接在跨平台程序中使用。

  • Windows socket基础

    Windows socket 基础        Windows socket是一套在Windows操作系统下的网络编程接口。它不是一种网络协议,而是一个开放的、支持多个协议的Windows下的网络编程接口 。      Windows socket是以Unix socket为基础,因此Windows socket中的许多函数名与Unix都是一样的。除此之外它还允许开发人员充分利用Wind

  • Windows网络编程中Socket与WSASocket区别

    这2个函数的主要功能都是创建一个SOCKET,函数定义分别如下: SOCKET WSAAPI socket( _In_ int af, _In_ int type, _In_ int protocol ); SOCKET WSASocket( _In_ int af, _In_ int type, _In_ int protocol, _In_ LPWSAPROTOCOL_INFO lpP

  • socket实现进程间通信

    使用socket实现进程间通信:(UNIX domain中面向连接通信)    使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。man unix内容如下:NAME( 名称)    unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL ? 用于本地内部进程通讯的套接 字。SYNOPSIS( 总览 )    #include     #include     unix_socket = socket(PF_UNIX,

  • UNIX Domain Socket使用

    Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流,又可以使用数据队列,而管道通信则只能使用字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组件。

  • 将Socket应用程序从Unix向Windows移植中应注意的几点问题

    将Socket应用程序从Unix向Windows移植中应注意的几点问题 套接字(socket)当今已成为最流行的网络通信应用程序接口。套接字最初是由加利福尼亚大学Berkeley分校为Unix操作系统开发的网络通信接口,后来它又被移植到DOS与Windows系统,特别是近几年来互联网络在全世界范围内被广泛普及并且增长迅猛,进一步奠定了它在网络通信程序开发领域的主宰地位。跨系统网络互联的呼声在我国也

  • 本地socket unix domain socket

    socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIXDomain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进

  • python linux脚本转windows_将Linux上的Python脚本交叉编译为Windows可执行文件

    I have a Python script that I'd like to compile into a Windows executable. Now, py2exe works fine from Windows, but I'd like to be able to run this from Linux. I do have Windows on my development mach...

Global site tag (gtag.js) - Google Analytics