﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-心情小站-随笔分类-转载</title><link>http://www.blogjava.net/RongHao/category/5414.html</link><description>勤学、勤思</description><language>zh-cn</language><lastBuildDate>Fri, 15 Jan 2010 00:43:46 GMT</lastBuildDate><pubDate>Fri, 15 Jan 2010 00:43:46 GMT</pubDate><ttl>60</ttl><item><title>奇文共赏：《百度孙云丰说，Google市侩，我感到恶心》(转帖)</title><link>http://www.blogjava.net/RongHao/archive/2010/01/14/309438.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Thu, 14 Jan 2010 05:29:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2010/01/14/309438.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/309438.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2010/01/14/309438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/309438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/309438.html</trackback:ping><description><![CDATA[<div style="font-size: 14px; line-height: 25px; text-indent: 25px;"><span style="color: #800000;">今天下午1时20分，百度首席产品设计师孙云丰在自己的博客中撰文关于谷歌退出中国，直指Google退出中国的姿态证明自己是市侩分子，对此感到恶心。<br />
</span></div>
<div style="font-size: 14px; line-height: 25px; text-indent: 25px;"><span style="color: #800000;">他的博客全文如下：<br />
</span></div>
<div style="font-size: 14px; line-height: 25px; text-indent: 25px;"><span style="color: #800000;"><span style="font-family: Arial; line-height: 20px;">google宣称要退出中国，所证明的，恰恰不是市面上的那些g粉所宣称的那样，google是个人权斗士，而刚好反了过来，正好证明google是个市侩分子。</span><br />
</span></div>
<div><span style="color: #800000;"><span style="font-family: Arial; line-height: 20px;">google
的首席法律顾问的调调让我感到恶心。因经济利益退出，就直白白的说好了，把自己涂脂抹粉一番，还煞有介事的提到google被中国人攻击，中国异议分子的
Gmail信箱被攻击，把这些事情作为退出中国的铺垫，这种论调是侮辱中国普通老百姓的智商，但还真有可能迎合那帮目空一切，但从未到过中国、对中国没有
丝毫了解，却又喜欢对中国说三道四的西方人的假想。<br style="line-height: normal;" />
<br style="line-height: normal;" />
只提一个假设，如果谷歌占据了中国80%的搜索市场份额，google的高管，还会这么高调的宣称要do no evil，从中国退出吗？<br style="line-height: normal;" />
<br style="line-height: normal;" />
整个事情给我的唯一感受，就是恶心。<br style="line-height: normal;" />
————&#8211;<br style="line-height: normal;" />
<span style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: normal;"><span style="font-family: Arial; line-height: 20px;">以上是作为一个曾经的忠实google用户而说的，和百度无关。市面上沾沾自喜于了解一点google的产品技术细节将google奉为道德楷模而自封G粉的兄弟，请勿跟帖瞎喷，你们根本不懂什么叫搜索引擎，什么叫自由人权。</span></span></span><span style="font-family: Arial; line-height: 20px;"><span style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: normal;"></span></span></span><span style="font-family: Arial; line-height: 20px;"><span style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: normal;"><span style="font-family: Arial; line-height: 20px;"><span style="color: red;"><br />
</span></span></span></span><br />
<span style="color: red; font-family: Arial;"><span class="Apple-style-span" style="line-height: 20px;">立此存照的原因在于，原帖&nbsp;<a href="http://news.csdn.net/a/20100113/216459.html">http://news.csdn.net/a/20100113/216459.html</a> 被百度的人要求删掉，所以本着对历史负责的态度，保存与此，欢迎转帖。</span></span></div>
<img src ="http://www.blogjava.net/RongHao/aggbug/309438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2010-01-14 13:29 <a href="http://www.blogjava.net/RongHao/archive/2010/01/14/309438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java的classload机制－－Tomcat 5</title><link>http://www.blogjava.net/RongHao/archive/2006/03/01/33030.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Wed, 01 Mar 2006 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2006/03/01/33030.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/33030.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2006/03/01/33030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/33030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/33030.html</trackback:ping><description><![CDATA[Tomcat是接触最久的应用服务器，同时也被它的classloading愚弄过好多次。印象中比较深的一次是建立了一个web应用，使用oracle数据库，我把oracle的jdbc driver放到了WEB-INF/lib目录下面，然后给Tomcat配置了数据源，在这个应用里面连接这个数据源，来访问数据库。看起来一切正常，可是一启动Tomcat，就报出一个错误，说是找不到driver类。后来知道这是由于Tomcat的classloading机制造成的。总的来说，Tomcat开源、简单，文档清楚，又学习过一阵它的源码，是我了解最多的应用服务器了，所以就从它开始。 
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;运行Tomcat就是运行org.apache.catalina.startup.Bootstrap类的main方法，和运行普通的应用程序并无二致，所以Java 2的classloading机制适用于这个过程。但是Bootstrap运行起来以后，会加载common、server下面的类，加载webapps下面的web应用。这些类的加载是由不同的classloader来完成的。Tomcat的classloader结构如下：<BR>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="HEIGHT: 18.25pt">
<TD style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 320.4pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 18.25pt; BACKGROUND-COLOR: transparent" vAlign=top width=427>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">BootStrap classloader(</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">加载</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">JRE/lib</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">下的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">rt.jar</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">和其他重要</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">jar</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">文件</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">)</FONT></SPAN></P></TD></TR></TBODY></TABLE></P>
<P><FONT face="Times New Roman"></FONT><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings"><SPAN><FONT face=Wingdings>é</FONT></SPAN></SPAN></SPAN></FONT></SPAN></P>
<P>
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="HEIGHT: 18.25pt">
<TD style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 320.4pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 18.25pt; BACKGROUND-COLOR: transparent" vAlign=top width=427>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">ExtClassLoader (</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">加载</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">JRE/lib/ext</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">下的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">jar</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">文件，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">Java</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">扩展框架使用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">)</FONT></SPAN></P></TD></TR></TBODY></TABLE></P>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings"><SPAN><FONT face=Wingdings>é</FONT></SPAN></SPAN></SPAN></FONT></SPAN></P>
<P>
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="HEIGHT: 18.25pt">
<TD style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 320.4pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 18.25pt; BACKGROUND-COLOR: transparent" vAlign=top width=427>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">AppClassLoader ($CATALINA_HOME/bin/</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">下</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">bootstrap.jar</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，</SPAN><SPAN style="FONT-SIZE: 9pt"><FONT face="Times New Roman"> <I><SPAN lang=EN-US>commons-logging -api.jar</SPAN></I></FONT></SPAN><I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，</SPAN></I><I><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">commons-daemon.jar</FONT></SPAN></I><I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，</SPAN></I><I><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">$JAVA_HOME/lib/tools.jar</FONT></SPAN></I><I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，</SPAN></I><FONT face="Times New Roman"><I><SPAN lang=EN-US style="FONT-SIZE: 9pt">jmx.jar</SPAN></I><SPAN lang=EN-US style="FONT-SIZE: 9pt">)</SPAN></FONT></P></TD></TR></TBODY></TABLE></P>
<P><SPAN lang=EN-US><FONT size=3><FONT face="Times New Roman"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></FONT></FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings"><SPAN><FONT face=Wingdings>é</FONT></SPAN></SPAN></P>
<P>
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="HEIGHT: 18.25pt">
<TD style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 320.4pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 18.25pt; BACKGROUND-COLOR: transparent" vAlign=top width=427>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">common (</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">加载</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">$CATALINA_HOME/common/</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">Tomcat</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">本身和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">Web App</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">共享类</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">)</FONT></SPAN></P></TD></TR></TBODY></TABLE></P>
<P><SPAN lang=EN-US><FONT size=3><FONT face="Times New Roman"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></FONT></FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings"><SPAN><FONT face=Wingdings>é</FONT></SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><SPAN><FONT face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings"><SPAN><FONT face=Wingdings>é</FONT></SPAN></SPAN></P>
<P>
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="HEIGHT: 18.25pt">
<TD style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 158.4pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 18.25pt; BACKGROUND-COLOR: transparent" vAlign=top width=211>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">Catalina (</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">加载</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">$CATALINA_HOME /server/</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">Tomcat</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">本身使用的类</SPAN><FONT face="Times New Roman"><SPAN lang=EN-US style="FONT-SIZE: 9pt">)</SPAN><SPAN lang=EN-US></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-LEFT: #d4d0c8; WIDTH: 162pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 18.25pt; BACKGROUND-COLOR: transparent" vAlign=top width=216>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">Shared (</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">加载</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">$CATALINA_BASE /shared/</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，所有</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">Web App</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">共享类</SPAN><FONT face="Times New Roman"><SPAN lang=EN-US style="FONT-SIZE: 9pt">)</SPAN><SPAN lang=EN-US></SPAN></FONT></P></TD></TR></TBODY></TABLE></P>
<P><SPAN lang=EN-US><FONT size=3><FONT face="Times New Roman"><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;</SPAN></FONT></FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings"><SPAN><FONT face=Wingdings>é</FONT></SPAN></SPAN></P>
<P>
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="HEIGHT: 18.25pt">
<TD style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 320.4pt; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 18.25pt; BACKGROUND-COLOR: transparent" vAlign=top width=427>
<P><FONT face="Times New Roman"><SPAN lang=EN-US><FONT size=1>WebappClassLoader</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"> (</SPAN></FONT><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">加载各个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">Web App</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">class</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，不同的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">Web App</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">被隔离开</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">)</FONT></SPAN></P></TD></TR></TBODY></TABLE></FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman"><BR></P>
<DIV><FONT size=3>Tomcat在启动的时候，完全忽略了class path的设置，而重新设置了class path，所以<SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">AppClassLoader </FONT></SPAN>载入的类将不是class path设置的类。</FONT></DIV>
<DIV><FONT size=3></FONT>&nbsp;</DIV>
<DIV><FONT size=3>Tomcat没有完全使用Java 2的parent delegation模型。这一点体现在<SPAN lang=EN-US>WebappClassLoader上。在一个web app中，载入类的过程是这样的：</SPAN></FONT></DIV>
<DIV><SPAN lang=EN-US><FONT size=3></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN lang=EN-US><FONT size=3>首先检查本地的<SPAN lang=EN-US>WebappClassLoader，如果没有，</SPAN></FONT></SPAN></DIV>
<DIV><SPAN lang=EN-US><SPAN lang=EN-US><FONT size=3>则请求它的父ClassLoader，即shared。</FONT></SPAN></SPAN></DIV>
<DIV><SPAN lang=EN-US><FONT size=3>从shared开始，采用parent delegation，即shared请求它的父classloader common来载入类，这个过程一直延续到<SPAN lang=EN-US style="FONT-SIZE: 9pt"><FONT face="Times New Roman">BootStrap classloader。</FONT></SPAN></FONT></SPAN></DIV>
<DIV><SPAN lang=EN-US><FONT face="Times New Roman" size=3><SPAN lang=EN-US style="FONT-SIZE: 9pt"></SPAN></FONT></SPAN>&nbsp;</DIV><SPAN lang=EN-US><FONT face="Times New Roman"><SPAN lang=EN-US style="FONT-SIZE: 9pt">
<DIV><BR><FONT size=3>正是因为这种机制，使我们在两个Web app中有相同的class的时候，不会相互干扰。比如说，两个app中都使用了log4j，在WEB-INF/lib下面分别有一份log4j.jar，配置输出到不同的文件。因为WebappClassLoader仅对本app可见，所以log4j可以独立工作，而不相互影响。但是，如果我们把这两个app下面的log4j.jar移动到shared目录或者common目录，那他们就会把日志输出到同样的文件了，因为这时候是共享的。</FONT></DIV>
<DIV><FONT size=3></FONT>&nbsp;</DIV>
<DIV><FONT size=3>记得当时看到WebappClassLoader的这个特性，心下暗喜，盘算着自己能不能写一个java.lang.String类，放到WEB-INF/lib下面，而得到优先加载的机会呢？马上兴冲冲地进行试验，但是结果让我失望，翻出tomcat的源码一看，发现以java.，javax.，sun.，开头的class，WebappClassLoader一概不予理会，直接把烫山芋扔给它的父loader了。另外，Tomcat文档交待，遇到加载org.xml.sax.* ，org.w3c.dom.* ，org.apache.xerces.* ，org.apache.xalan.* 这些包的class的请求，WebappClassLoader也不会受理。<BR></FONT></SPAN></FONT></SPAN><BR>引用地址：</DIV>
<DIV><A href="http://spaces.msn.com/myj1024/blog/  ">http://spaces.msn.com/myj1024/blog/&nbsp; </A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></DIV></DIV><img src ="http://www.blogjava.net/RongHao/aggbug/33030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2006-03-01 16:55 <a href="http://www.blogjava.net/RongHao/archive/2006/03/01/33030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JR BLOG上的留言</title><link>http://www.blogjava.net/RongHao/archive/2005/12/06/22754.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Tue, 06 Dec 2005 10:37:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2005/12/06/22754.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/22754.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2005/12/06/22754.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/22754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/22754.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看到你的博客，感触很多．我也有群程序员朋友，特别是做了几年后也在考虑自己以后的职业发展方向与规划问题．理论大家都知道，可是实际操作中，却不是那么单纯与容易的． <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我想到了下面的一个故事及一篇对程序员职业生涯规划的一文章，与你分享： <BR>　&nbsp;&nbsp;&nbsp; 偶然在网上看到这样一个故事：John和Bill一起到山中探险，忽然他们发现一只老虎正深情的望着他们，John撒腿就要跑，Bill却迅速的从背包里拿出一双跑鞋穿在脚上，John看到后气急败坏的对说Bill“你穿什么鞋也跑不过老虎的”Bill同情的看了他一眼，回答说“我干吗要和老虎比，我只要跑过你就够了。” <BR><BR>　　大笑以后不免想起John的境遇是不是有点象中国的程序员呢？我个人习惯把软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类的方法，我把优秀程序员的标准分为职业习惯和个人能力两方面，职业习惯包括文档编写习惯，规范化、标准化的编码习惯、软件测试习惯、模块化开发习惯等，个人能力包括团队协作能力、需求理解能力、学习和创新能力等。我接触过的几百个程序员后的感觉，除非那种天生适合编程的人才能成为行业的顶尖高手，按照以上标准绝大多数程序员只能归入“平庸”之列，所以我们这里的讨论主要是基于大多数“平庸”的程序员的。 <BR><BR>　　故事中的John能不能活命跟三个问题有关：老虎、Bill、自己，中国程序员的困境也来自三个方面。 <BR><BR>　　困境之一：老虎的威胁。程序员要面对的饿老虎实在不少，比如说老板，好象老板就是程序员的天敌（当然自己当老板的程序员除外，呵呵），什么“不懂技术却指手画脚”、什么“得到与付出不相当”似乎是程序员最常见的牢骚，这个问题不可能得到真正的解决，在这里就不详细讨论了。 <BR><BR>　　困境之二：Bill的竞争。一般说来中国的程序员大都是吃“青春饭”的，大部分程序员的黄金时代是24～28岁。到了30岁左右，一批又一批年轻程序员会给你带来巨大的竞争压力。首先由于软件行业的飞速发展，很多自己以前学的东西逐渐升级换代，而许多程序员由于长期于工作，学习新知识的效率必然下降。其次自己干了几年，薪水要求自然就高了，而年轻程序员工资又低、干活又快，当然会成为老板的首选；第三，30岁基本都已经成家了，要支撑家庭的生活负担，你几乎连从头在来的勇气都不会有了。中国的老话说“长江后浪催前浪、一代新人换旧人”，这个历史的规律在软件开发行业体现的尤其明显和残酷，很多程序员必然要面对的结果就是降薪乃至失业。 <BR><BR>　　困境之三：自我的实力。我们都知道人最难战胜的是自己，所以自我也就是程序员需要超越的最大障碍。大多程序员都把系统分析员和项目经理作为自己的职业目标，但这些目标的达成，需要个人素质、市场机遇等多个方面的条件，太多的程序员就是在高不成、低不就的状态中蹉跎了岁月。对于系统分析员，特别需要以下几方面的素质：客户需求分析能力、系统架构与设计能力、模块分解设计能力、项目流程控制能力、项目风险评估能力等，而对于项目经理则更注重项目管理方面的能力如团队组织能力、沟通协调能力、分析问题解决问题的能力以及良好的职业道德等，而这些素质和能力往往只能依靠程序员个人的学习和努力。看到越来越多的程序员开始学习项目管理的课程，真的有点为他们担心，因为现在的项目管理培训只能停留在理论和考证的程度，既没有素质方面的训练，又缺少实际软件开发项目的案例，学习的结果远远不能达到预期的效果。<img src ="http://www.blogjava.net/RongHao/aggbug/22754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2005-12-06 18:37 <a href="http://www.blogjava.net/RongHao/archive/2005/12/06/22754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何娶到比尔·盖茨的女儿</title><link>http://www.blogjava.net/RongHao/archive/2005/11/29/21819.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Tue, 29 Nov 2005 05:22:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2005/11/29/21819.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/21819.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2005/11/29/21819.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/21819.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/21819.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一位优秀的商人杰克，有一天告诉他的儿子<BR>　　杰克：我已经决定好了一个女孩子，我要你娶她<BR>　　儿子：我自己要娶的新娘我自己会决定<BR>　　杰克：但我说的这女孩可是比尔·盖茨的女儿喔<BR>　　儿子：哇！那这样的话……</P>
<P><BR>　　在一个聚会中，杰克走向比尔·盖茨<BR>　　杰克：我来帮你女儿介绍个好丈夫<BR>　　比尔：我女儿还没想嫁人呢<BR>　　杰克：但我说的这年轻人可是世界银行的副总裁喔<BR>　　比尔：哇！那这样的话……</P>
<P><BR>　　接着，杰克去见世界银行总裁<BR>　　杰克：我想介绍一位年轻人来当贵行的副总裁<BR>　　总裁：我们已经有很多位副总裁，够多了<BR>　　杰克：但我说的这年轻人可是比尔·盖茨的女婿喔<BR>　　总裁：哇！那这样的话……</P>
<P><BR>　　最后，杰克的儿子娶了比尔-盖茨的女儿，又当上世界银行的副总裁</P>
<P><BR>　　知道吗，生意通常都是这样谈成的 </P><img src ="http://www.blogjava.net/RongHao/aggbug/21819.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2005-11-29 13:22 <a href="http://www.blogjava.net/RongHao/archive/2005/11/29/21819.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>