<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>广告时间 by Hugo Zhu</title>
	<atom:link href="http://hugozhu.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hugozhu.wordpress.com</link>
	<description>广告怎么才能不烦人哩？其实广告也是一种分享啊！</description>
	<lastBuildDate>Wed, 19 Aug 2009 04:08:01 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='hugozhu.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/931863f60fbce053079155bec75758a7?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>广告时间 by Hugo Zhu</title>
		<link>http://hugozhu.wordpress.com</link>
	</image>
			<item>
		<title>小技巧：查看Java的线程</title>
		<link>http://hugozhu.wordpress.com/2009/08/19/%e5%b0%8f%e6%8a%80%e5%b7%a7%ef%bc%9a%e6%9f%a5%e7%9c%8bjava%e7%9a%84%e7%ba%bf%e7%a8%8b/</link>
		<comments>http://hugozhu.wordpress.com/2009/08/19/%e5%b0%8f%e6%8a%80%e5%b7%a7%ef%bc%9a%e6%9f%a5%e7%9c%8bjava%e7%9a%84%e7%ba%bf%e7%a8%8b/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 04:02:38 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=372</guid>
		<description><![CDATA[用ps -eLf &#124; grep java &#124; wc 查看系统里运行的java线程数
用top H可以按线程排序CPU和内存的占用及相应的线程ID
用killall -3 (unix only) 或 jstack -l 可以Dump出Java的线程，然后根据线程ID（转换成16进制后对应thread dump的nid）查看线程的堆栈
Posted in 生活随笔       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=372&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>用<strong>ps -eLf | grep java | wc </strong>查看系统里运行的java线程数<br />
用<strong>top H</strong>可以按线程排序CPU和内存的占用及相应的线程ID<br />
用<strong>killall -3 </strong>(unix only) 或 <strong>jstack -l </strong>可以Dump出Java的线程，然后根据线程ID（转换成16进制后对应thread dump的nid）查看线程的堆栈</p>
Posted in 生活随笔  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/372/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=372&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/08/19/%e5%b0%8f%e6%8a%80%e5%b7%a7%ef%bc%9a%e6%9f%a5%e7%9c%8bjava%e7%9a%84%e7%ba%bf%e7%a8%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>
	</item>
		<item>
		<title>rsync配置</title>
		<link>http://hugozhu.wordpress.com/2009/07/07/rsync%e9%85%8d%e7%bd%ae/</link>
		<comments>http://hugozhu.wordpress.com/2009/07/07/rsync%e9%85%8d%e7%bd%ae/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 07:18:08 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=367</guid>
		<description><![CDATA[安装脚本
#!/bin/sh
apt-get install rsync xinetd
sed -in-place -e s/RSYNC_ENABLE=false/RSYNC_ENABLE=inetd/ /etc/default/rsync
cp rsync /etc/xinetd.d/rsync
cp rsyncd.conf /etc/rsyncd.conf
cp rsyncd.secrets /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
/etc/init.d/xinetd restart
配置文件内容如下：
rsync

service rsync
{
disable         = no
socket_type     = stream
wait            = no
user         [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=367&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><code><strong>安装脚本</strong></code></p>
<blockquote><p><code>#!/bin/sh<br />
apt-get install rsync xinetd</code></p>
<p>sed -in-place -e s/RSYNC_ENABLE=false/RSYNC_ENABLE=inetd/ /etc/default/rsync</p>
<p>cp rsync /etc/xinetd.d/rsync<br />
cp rsyncd.conf /etc/rsyncd.conf<br />
cp rsyncd.secrets /etc/rsyncd.secrets<br />
chmod 600 /etc/rsyncd.secrets<br />
/etc/init.d/xinetd restart</p></blockquote>
<p>配置文件内容如下：<br />
<strong>rsync</strong></p>
<blockquote><p><code><br />
service rsync<br />
{<br />
disable         = no<br />
socket_type     = stream<br />
wait            = no<br />
user            = root<br />
server          = /usr/bin/rsync<br />
server_args     = --daemon<br />
log_on_failure  += USERID<br />
}<br />
</code></p></blockquote>
<p><strong>rsyncd.conf</strong></p>
<blockquote><p><code><br />
max connections = 2<br />
log file = /var/log/rsync.log<br />
timeout = 300</code></p>
<p>[etc]<br />
comment = etc<br />
path = /etc<br />
read only = no<br />
list = yes<br />
uid = root<br />
gid = root<br />
auth users = user<br />
secrets file = /etc/rsyncd.secrets</p></blockquote>
<p><strong>rsyncd.secrets</strong></p>
<blockquote><p><code><br />
user:pass<br />
</code></p></blockquote>
<p><strong>使用方法：</strong></p>
<blockquote><p>rsync -tvzrp &#8211;password-file ./rsync.password  /etc/hosts user@dest_host::etc</p></blockquote>
Posted in 生活随笔  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/367/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=367&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/07/07/rsync%e9%85%8d%e7%bd%ae/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>
	</item>
		<item>
		<title>源代码混合字符集批量转码</title>
		<link>http://hugozhu.wordpress.com/2009/07/06/%e6%ba%90%e4%bb%a3%e7%a0%81%e6%b7%b7%e5%90%88%e5%ad%97%e7%ac%a6%e9%9b%86%e6%89%b9%e9%87%8f%e8%bd%ac%e7%a0%81/</link>
		<comments>http://hugozhu.wordpress.com/2009/07/06/%e6%ba%90%e4%bb%a3%e7%a0%81%e6%b7%b7%e5%90%88%e5%ad%97%e7%ac%a6%e9%9b%86%e6%89%b9%e9%87%8f%e8%bd%ac%e7%a0%81/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 14:48:50 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=365</guid>
		<description><![CDATA[如果代码文件里即有GBK又有UTF-8编码，且又没有enca的情况下，可以用shell，iconv，php稍微搞一下：
1）用PHP写一个测试文件编码的小程序
vi ~/bin/detect_encoding
#!/usr/bin/php -n
&#60;?php
$file=fopen(&#8216;php://stdin&#8217;,'r&#8217;);
$s = &#8221;;
while (!feof($file)) {
$buffer = fgets($file,4096);
$s.=$buffer;
}
fclose($file);
echo mb_detect_encoding($s,&#8221;ASCII,UTF-8,GBK&#8221;);
2 )  找出所有GBK编码的文件：
for f in `find . -name &#8220;*.java&#8221;`; do ~/bin/detect_encoding &#60; $f; echo &#8221; $f&#8221;; done &#124; grep CP936 &#124; cut -b 6- &#62; tmp_list
3）用iconv批量转
for i in `cat tmp_list`; do iconv -f GBK -t UTF-8 $i &#62; tmp; mv tmp $i; done
&#8211;搞定&#8211;
Posted in 生活随笔  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=365&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>如果代码文件里即有GBK又有UTF-8编码，且又没有<a href="http://linux.die.net/man/1/enca">enca</a>的情况下，可以用shell，iconv，php稍微搞一下：</p>
<p>1）用PHP写一个测试文件编码的小程序<br />
vi ~/bin/detect_encoding</p>
<blockquote><p>#!/usr/bin/php -n<br />
&lt;?php</p>
<p>$file=fopen(&#8216;php://stdin&#8217;,'r&#8217;);<br />
$s = &#8221;;<br />
while (!feof($file)) {<br />
$buffer = fgets($file,4096);<br />
$s.=$buffer;<br />
}<br />
fclose($file);<br />
echo mb_detect_encoding($s,&#8221;ASCII,UTF-8,GBK&#8221;);</p></blockquote>
<p>2 )  找出所有GBK编码的文件：<br />
for f in `find . -name &#8220;*.java&#8221;`; do ~/bin/detect_encoding &lt; $f; echo &#8221; $f&#8221;; done | grep CP936 | cut -b 6- &gt; tmp_list</p>
<p>3）用iconv批量转<br />
for i in `cat tmp_list`; do iconv -f GBK -t UTF-8 $i &gt; tmp; mv tmp $i; done</p>
<p>&#8211;搞定&#8211;</p>
Posted in 生活随笔  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/365/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=365&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/07/06/%e6%ba%90%e4%bb%a3%e7%a0%81%e6%b7%b7%e5%90%88%e5%ad%97%e7%ac%a6%e9%9b%86%e6%89%b9%e9%87%8f%e8%bd%ac%e7%a0%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>
	</item>
		<item>
		<title>用Xtrabackup备份MySQL</title>
		<link>http://hugozhu.wordpress.com/2009/06/29/%e7%94%a8xtrabackup%e5%a4%87%e4%bb%bdmysql/</link>
		<comments>http://hugozhu.wordpress.com/2009/06/29/%e7%94%a8xtrabackup%e5%a4%87%e4%bb%bdmysql/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 02:51:28 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[网站技术]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=363</guid>
		<description><![CDATA[安装方法：
wget http://www.percona.com/mysql/xtrabackup/xtrabackup-0.8.tar.gz
tar zxf xtrabackup-0.8.tar.gz
 cd xtrabackup-0.8
./configure
make
make install
使用命令：
sudo ./innobackupex-1.5.1 &#8211;user=root &#8211;stream=tar backup/ &#8211;slave-info &#8211;databases=broad &#124; gzip &#62; backup/broad.gz
备注：
innobackupex: You must use -i (&#8211;ignore-zeros) option for extraction of the tar stream.
Posted in 网站技术       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=363&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>安装方法：</strong></p>
<p>wget http://www.percona.com/mysql/xtrabackup/xtrabackup-0.8.tar.gz<br />
tar zxf xtrabackup-0.8.tar.gz<br />
<strong> cd xtrabackup-0.8<br />
./configure<br />
make<br />
make install</strong></p>
<p><strong>使用命令：</strong></p>
<p>sudo ./innobackupex-1.5.1 &#8211;user=root &#8211;stream=tar backup/ &#8211;slave-info &#8211;databases=broad | gzip &gt; backup/broad.gz</p>
<p><strong>备注：</strong></p>
<p>innobackupex: You must use -i (&#8211;ignore-zeros) option for extraction of the tar stream.</p>
Posted in 网站技术  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/363/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=363&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/06/29/%e7%94%a8xtrabackup%e5%a4%87%e4%bb%bdmysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>
	</item>
		<item>
		<title>续Reload Web Application的问题：解决方法</title>
		<link>http://hugozhu.wordpress.com/2009/06/13/%e7%bb%adreload-web-application%e7%9a%84%e9%97%ae%e9%a2%98%ef%bc%9a%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/</link>
		<comments>http://hugozhu.wordpress.com/2009/06/13/%e7%bb%adreload-web-application%e7%9a%84%e9%97%ae%e9%a2%98%ef%bc%9a%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 20:02:29 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=348</guid>
		<description><![CDATA[为了确定重新部署是否产生内存泄漏（垃圾收集清除不干净，消耗内存越来越多），一个有效的检查方法就是undeploy后，容器为Web Application创建的class loader应该会消失，如果没有的话，那就肯定有内存泄漏了，这时还可以用Profiler工具查看是哪些对象仍然被引用了，比如下图：

容器用的是Jetty，重新部署三次后undeploy，仍然能看到三个WebAppClassLoader对象，每个对象都是因为有org.dom4j.DocumentFactory对象被引用了，引用者就是一个ThreadLocal对象并绑定到了容器创建的一个定时服务线程上（所以不能释放掉）。Dom4J是一个比较好用的XML解析器，估计也是用ThreadLocal来做cache提高性能，搜索一下dom4j memory leak，还真有人报告过这个问题。解决的方法则是升级Dom4J到1.6.1以上，新版本已经解决了这个问题。。。
下面的图是解决内存泄漏后的一次重新部署，可以清楚看到垃圾收集启动了一次，清除干净了内存，WebAppClassLoader对象还是只有一个。


常见的造成内存泄漏的原因：
JDBC Driver Manager 
在全局的DriverManager注册了 driver后不注销掉会引起内存泄漏，解决方法是在ServletContextListener的contextDestroyed（）方法内使用下列代码：

try {
    Enumeration drivers = DriverManager.getDrivers();
    while(drivers.hasMoreElements()) {
        Driver driver = drivers.nextElement();
        if (driver.getClass().getClassLoader() == getClass().getClassLoader()) {
           [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=348&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>为了确定重新部署是否产生内存泄漏（垃圾收集清除不干净，消耗内存越来越多），一个有效的检查方法就是undeploy后，容器为Web Application创建的class loader应该会消失，如果没有的话，那就肯定有内存泄漏了，这时还可以用Profiler工具查看是哪些对象仍然被引用了，比如下图：</p>
<p style="text-align:center;"><a href="http://hugozhu.files.wordpress.com/2009/06/ykj1.png"><img class="size-full wp-image-349 aligncenter" title="ykj" src="http://hugozhu.files.wordpress.com/2009/06/ykj1.png?w=499&#038;h=350" alt="ykj" width="499" height="350" /></a></p>
<p>容器用的是Jetty，重新部署三次后undeploy，仍然能看到三个WebAppClassLoader对象，每个对象都是因为有org.dom4j.DocumentFactory对象被引用了，引用者就是一个ThreadLocal对象并绑定到了容器创建的一个定时服务线程上（所以不能释放掉）。Dom4J是一个比较好用的XML解析器，估计也是用ThreadLocal来做cache提高性能，搜索一下<a href="http://search.yahoo.com/search?p=Dom4J%20memory%20leak&amp;fr=inq-x-ff">dom4j memory leak</a>，还真有人报告过这个问题。解决的方法则是升级Dom4J到1.6.1以上，新版本已经解决了这个问题。。。</p>
<p>下面的图是解决内存泄漏后的一次重新部署，可以清楚看到垃圾收集启动了一次，清除干净了内存，WebAppClassLoader对象还是只有一个。</p>
<p style="text-align:center;"><a href="http://hugozhu.files.wordpress.com/2009/06/snap6.png"><img class="size-full wp-image-355 aligncenter" title="Snap6" src="http://hugozhu.files.wordpress.com/2009/06/snap6.png?w=500&#038;h=293" alt="Snap6" width="500" height="293" /></a></p>
<p style="text-align:center;"><a href="http://hugozhu.files.wordpress.com/2009/06/snap7.png"><img class="size-full wp-image-356 aligncenter" title="Snap7" src="http://hugozhu.files.wordpress.com/2009/06/snap7.png?w=500&#038;h=293" alt="Snap7" width="500" height="293" /></a></p>
<p>常见的造成内存泄漏的原因：</p>
<p><strong>JDBC Driver Manager </strong></p>
<p>在全局的DriverManager注册了 driver后不注销掉会引起内存泄漏，解决方法是在ServletContextListener的contextDestroyed（）方法内使用下列代码：</p>
<pre class="brush: java;">
try {
    Enumeration drivers = DriverManager.getDrivers();
    while(drivers.hasMoreElements()) {
        Driver driver = drivers.nextElement();
        if (driver.getClass().getClassLoader() == getClass().getClassLoader()) {
             DriverManager.deregisterDriver(driver);
        }
    }
} catch (SQLException e) {
    e.printStackTrace();
}
</pre>
<p><strong>Hibernate</strong><br />
Hibernate 3用的cglib也有ThreadLocal内存泄漏，升级到3.2.5以后才修正了这个问题。</p>
Posted in 生活随笔  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/348/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=348&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/06/13/%e7%bb%adreload-web-application%e7%9a%84%e9%97%ae%e9%a2%98%ef%bc%9a%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>

		<media:content url="http://hugozhu.files.wordpress.com/2009/06/ykj1.png" medium="image">
			<media:title type="html">ykj</media:title>
		</media:content>

		<media:content url="http://hugozhu.files.wordpress.com/2009/06/snap6.png" medium="image">
			<media:title type="html">Snap6</media:title>
		</media:content>

		<media:content url="http://hugozhu.files.wordpress.com/2009/06/snap7.png" medium="image">
			<media:title type="html">Snap7</media:title>
		</media:content>
	</item>
		<item>
		<title>为什么容器Reload Web Application经常出现OutOfMemoryError</title>
		<link>http://hugozhu.wordpress.com/2009/06/12/%e4%b8%ba%e4%bb%80%e4%b9%88%e5%ae%b9%e5%99%a8reload-web-application%e7%bb%8f%e5%b8%b8%e5%87%ba%e7%8e%b0outofmemoryerror/</link>
		<comments>http://hugozhu.wordpress.com/2009/06/12/%e4%b8%ba%e4%bb%80%e4%b9%88%e5%ae%b9%e5%99%a8reload-web-application%e7%bb%8f%e5%b8%b8%e5%87%ba%e7%8e%b0outofmemoryerror/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 21:57:10 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=343</guid>
		<description><![CDATA[开发时候为了提高效率，我们总希望重新编译的类能立刻生效，或重新部署应用而不重新启动应用服务器&#8212;所谓的”热部署“
无论是用Resin,  Tomcat，Jetty， 如果你试图不重新启动应用服务器，而重新部署你的应用(WebApp)，多来几次后就可能会出现：&#8221;java.lang.OutOfMemoryError: PermGen space&#8221;的错误。
PermGen 是JVM用来保存类定义和常量池的保留空间，缺省是64M，虽然你可以通过 -XX:MaxPermSize启动参数来增加PermGen空间，但这也只是允许你多reload几次，而不能根本解决问题。
问题主要原因是出在Class loader上，Tomcat是按下面的关系来创建Webapp的Class Loader（详见：http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html)
      Bootstrap
          &#124;
       System
          &#124;
       Common
      [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=343&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>开发时候为了提高效率，我们总希望重新编译的类能立刻生效，或重新部署应用而不重新启动应用服务器&#8212;所谓的”热部署“</p>
<p>无论是用Resin,  Tomcat，Jetty， 如果你试图不重新启动应用服务器，而重新部署你的应用(WebApp)，多来几次后就可能会出现：&#8221;java.lang.OutOfMemoryError: PermGen space&#8221;的错误。</p>
<p>PermGen 是JVM用来保存类定义和常量池的保留空间，缺省是64M，虽然你可以通过 -XX:MaxPermSize启动参数来增加PermGen空间，但这也只是允许你多reload几次，而不能根本解决问题。</p>
<p>问题主要原因是出在Class loader上，Tomcat是按下面的关系来创建Webapp的Class Loader（详见：http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html)</p>
<pre>      Bootstrap
          |
       System
          |
       Common
       /     \
  Webapp1   Webapp2 ...</pre>
<p>通过这种方式，应用服务器可以把不同的Webapp严格区分开来，Webapp1中载入的class在Webapp2可以不可见，但在System或Common里载入的则都可见，实际应用中，Tomcat或Resin的lib目录下jar库可以被所有webapp调用。</p>
<p>当你重新部署一个应用时候，容器一般是把原来供这个Webapp的class loader设成null，并为应用重新创建一个class loader来装载应用使用的类。理想情况下当然是希望之前的class loader能够完全被垃圾收集。但实际情况下如果你的应用使用了别的class loader（如System)，对象被上层class loader引用后不能被释放，那应用的class loader就不能干净地被垃圾收集了。例如下面的代码：</p>
<p><code>private static final ThreadLocal cache = new ThreadLocal();<br />
cache.set(yourObject);</code></p>
<p>因为ThreadLocal对象绑定在当前线程，而该线程由应用服务器本身创建（使用了更高层的Class Loader)，原来的应用就再也不能被垃圾收集干净了。</p>
Posted in 生活随笔  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/343/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=343&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/06/12/%e4%b8%ba%e4%bb%80%e4%b9%88%e5%ae%b9%e5%99%a8reload-web-application%e7%bb%8f%e5%b8%b8%e5%87%ba%e7%8e%b0outofmemoryerror/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>
	</item>
		<item>
		<title>Linkedin 架构</title>
		<link>http://hugozhu.wordpress.com/2009/04/30/linkedin-%e6%9e%b6%e6%9e%84/</link>
		<comments>http://hugozhu.wordpress.com/2009/04/30/linkedin-%e6%9e%b6%e6%9e%84/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 08:14:13 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=268</guid>
		<description><![CDATA[From: http://hurvitz.org/blog/2008/06/linkedin-architecture
Linedin是美国最大的职业人士网络，我也有一个帐号：http://www.linkedin.com/in/hugozhu
网站的一些数据：
Site Statistics

22 million members
4+ million unique visitors/month
40 million page views/day
2 million searches/day
250K invitations sent/day
1 million answers posted
2 million email messages/day

Software

Solaris (running on Sun x86 platform and Sparc)
Tomcat and Jetty as application servers
Oracle and MySQL as DBs
No ORM (such as Hibernate); they use straight JDBC
ActiveMQ for JMS. (It’s partitioned by type of messages. Backed by [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=268&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>From: <a href="http://www.slideshare.net/linkedin/linkedins-communication-architecture">http://hurvitz.org/blog/2008/06/linkedin-architecture</a></p>
<p>Linedin是美国最大的<span style="font-family:宋体;">职业人士网络</span>，我也有一个帐号：<a href="http://www.linkedin.com/in/hugozhu">http://www.linkedin.com/in/hugozhu</a></p>
<p>网站的一些数据：</p>
<h3>Site Statistics</h3>
<ul>
<li>22 million members</li>
<li>4+ million unique visitors/month</li>
<li>40 million page views/day</li>
<li>2 million searches/day</li>
<li>250K invitations sent/day</li>
<li>1 million answers posted</li>
<li>2 million email messages/day</li>
</ul>
<h3>Software</h3>
<ul>
<li>Solaris (running on Sun x86 platform and Sparc)</li>
<li>Tomcat and Jetty as application servers</li>
<li>Oracle and MySQL as DBs</li>
<li>No ORM (such as Hibernate); they use straight JDBC</li>
<li>ActiveMQ for JMS. (It’s partitioned by type of messages. Backed by MySQL.)</li>
<li>Lucene as a foundation for search</li>
<li>Spring as glue</li>
</ul>
<p>今天的架构：</p>
<p><img title="Linkedin架构" src="http://hugozhu.files.wordpress.com/2009/04/snap1.png?w=500&#038;h=388" alt="Linkedin架构" width="500" height="388" /></p>
<p>使用到的Java技术：</p>
<p><img title="Linkedin Java 技术" src="http://hugozhu.files.wordpress.com/2009/04/snap3.png?w=499&#038;h=355" alt="Linkedin Java 技术" width="499" height="355" /></p>
<p>他们在实践中的一些经验教训：</p>
<ul>
<li>Centralizing updates into a single service leaves a single point of<br />
failure</li>
<li>Be prepared to spend time tuning the HttpConnectionManager<br />
(timeouts, max connections)</li>
<li>While the system was stabilizing, it was affecting all users; should<br />
have rolled the new service out to a small subset!</li>
<li>Don’t use “Least Frequently Used” (LFU) in a large EHCache—very<br />
bad performance! (改用LRU&#8211;Least Recently Used)</li>
</ul>
Posted in 生活随笔  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/268/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=268&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/04/30/linkedin-%e6%9e%b6%e6%9e%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>

		<media:content url="http://hugozhu.files.wordpress.com/2009/04/snap1.png" medium="image">
			<media:title type="html">Linkedin架构</media:title>
		</media:content>

		<media:content url="http://hugozhu.files.wordpress.com/2009/04/snap3.png" medium="image">
			<media:title type="html">Linkedin Java 技术</media:title>
		</media:content>
	</item>
		<item>
		<title>给JVM分配多大的内存合适？</title>
		<link>http://hugozhu.wordpress.com/2009/04/22/%e7%bb%99jvm%e5%88%86%e9%85%8d%e5%a4%9a%e5%a4%a7%e7%9a%84%e5%86%85%e5%ad%98%e5%90%88%e9%80%82%ef%bc%9f/</link>
		<comments>http://hugozhu.wordpress.com/2009/04/22/%e7%bb%99jvm%e5%88%86%e9%85%8d%e5%a4%9a%e5%a4%a7%e7%9a%84%e5%86%85%e5%ad%98%e5%90%88%e9%80%82%ef%bc%9f/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 09:56:23 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=265</guid>
		<description><![CDATA[给JVM分配多大的内存合适？
32位系统&#8212;2G
64位系统&#8212;3G
-Over-
Posted in 生活随笔       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=265&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>给JVM分配多大的内存合适？<br />
32位系统&#8212;2G<br />
64位系统&#8212;3G</p>
<p>-Over-</p>
Posted in 生活随笔  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/265/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=265&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/04/22/%e7%bb%99jvm%e5%88%86%e9%85%8d%e5%a4%9a%e5%a4%a7%e7%9a%84%e5%86%85%e5%ad%98%e5%90%88%e9%80%82%ef%bc%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>
	</item>
		<item>
		<title>Maven略过单元测试</title>
		<link>http://hugozhu.wordpress.com/2009/04/21/maven%e7%95%a5%e8%bf%87%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95/</link>
		<comments>http://hugozhu.wordpress.com/2009/04/21/maven%e7%95%a5%e8%bf%87%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 04:03:48 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=263</guid>
		<description><![CDATA[虽然不是很建议这样做，但有时候还是迫不得已的：
Maven to bypass (skip) unit tests:  mvn  -DskipTests=true install
Posted in 生活随笔       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=263&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>虽然不是很建议这样做，但有时候还是迫不得已的：</p>
<p>Maven to bypass (skip) unit tests:  mvn  -DskipTests=true install</p>
Posted in 生活随笔  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/263/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=263&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/04/21/maven%e7%95%a5%e8%bf%87%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>
	</item>
		<item>
		<title>OSGi 演示工程</title>
		<link>http://hugozhu.wordpress.com/2009/04/20/osgi-%e6%bc%94%e7%a4%ba%e5%b7%a5%e7%a8%8b/</link>
		<comments>http://hugozhu.wordpress.com/2009/04/20/osgi-%e6%bc%94%e7%a4%ba%e5%b7%a5%e7%a8%8b/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 15:26:33 +0000</pubDate>
		<dc:creator>hugozhu</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://hugozhu.wordpress.com/?p=261</guid>
		<description><![CDATA[因为项目需求，快速搭建了一下嵌入OSGi容器到Web框架的演示工程，重点测试了一下在大流量下切换服务提供者是否稳定有效。代码放在：http://github.com/hugozhu/osgi_demo
OSGi使用是Host方式还是Embed方式要看项目需求，要了解你的扩展点在哪里，如果盲目选择Host方式，一些不需要扩展的地方也要按OSGi的方式来实现，项目周期就可能被拉长，风险就变大了。演示工程采用的是Embed方式，在这个框架上可以实现接口提供通过Web安装或更新组件（Bundle）及相关的管理功能，同时又可以很灵活的和已经存在的项目集成，只需要把扩展点的组件通过OSGi容器来管理而少量的迁移代码。
Posted in 生活随笔       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=261&subd=hugozhu&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>因为项目需求，快速搭建了一下嵌入OSGi容器到Web框架的演示工程，重点测试了一下在大流量下切换服务提供者是否稳定有效。代码放在：http://github.com/hugozhu/osgi_demo</p>
<p>OSGi使用是Host方式还是Embed方式要看项目需求，要了解你的扩展点在哪里，如果盲目选择Host方式，一些不需要扩展的地方也要按OSGi的方式来实现，项目周期就可能被拉长，风险就变大了。演示工程采用的是Embed方式，在这个框架上可以实现接口提供通过Web安装或更新组件（Bundle）及相关的管理功能，同时又可以很灵活的和已经存在的项目集成，只需要把扩展点的组件通过OSGi容器来管理而少量的迁移代码。</p>
Posted in 生活随笔  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugozhu.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugozhu.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugozhu.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugozhu.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugozhu.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugozhu.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugozhu.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugozhu.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugozhu.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugozhu.wordpress.com/261/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugozhu.wordpress.com&blog=6063337&post=261&subd=hugozhu&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hugozhu.wordpress.com/2009/04/20/osgi-%e6%bc%94%e7%a4%ba%e5%b7%a5%e7%a8%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7617bc17dcd536c501360d62bce4db25?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hugozhu</media:title>
		</media:content>
	</item>
	</channel>
</rss>