<?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/"
	>

<channel>
	<title>Freddie&#039;s Ria World- 使用嵌入式 Tomcat 简化程序调试 &#8211; Blog Title</title>
	<atom:link href="http://javaflex.net/tag/%e5%b5%8c%e5%85%a5%e5%bc%8ftomcat/feed/" rel="self" type="application/rss+xml" />
	<link>http://javaflex.net</link>
	<description>Just another flex weblog</description>
	<lastBuildDate>Thu, 19 Aug 2010 08:28:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>zh</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>使用嵌入式 Tomcat 简化程序调试</title>
		<link>http://javaflex.net/java/tomcat/</link>
		<comments>http://javaflex.net/java/tomcat/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 02:42:42 +0000</pubDate>
		<dc:creator>Freddie</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[tomcat embed]]></category>
		<category><![CDATA[内嵌tomcat]]></category>
		<category><![CDATA[嵌入式tomcat]]></category>

		<guid isPermaLink="false">http://javaflex.net/?p=72</guid>
		<description><![CDATA[ 
在开发基于 Tomcat 的 Web 程序时，一个比较头痛的问题就是如何将以接口分离的后台服务与前台
页面进行联调。以 Tomcat 为中心的运行环境中虽然能够支持 IDE 直接进行跟踪调试，但配置麻烦、速
度较慢且限制很多，总不如直接对后台程序进行调试来的方便。
    一个较好的解决方法，是利用 Tomcat 的嵌入式版本，将 Tomcat 反过来嵌入到后台服务中，以后台
服务为主进行调试。这样一来 Tomcat 从整体容器变为后台服务的一种，在不改变行为的前提下，能够自
行定制调试环境。例如笔者开发的一个后台服务调试环境，支持基于命令行的简便移用的调试命令，直接
对各种后台服务进行控制，并通过前台界面验证结果，大大减轻了整合时的调试难度。
    虽然普通配置的 Tomcat 理论上也可以直接嵌入到后台程序，但推荐还是使用 Tomcat 定制的
Embeded 版本，这样集成度更高且性能较好。同时因为代码完全相同，不会存在调试环境内外的功能上的
差异问题。
    [url=http://apache.mirrors.versehost.com/jakarta/tomcat-5/v5.0.28/bin/jakarta-tomcat-
5.0.28-embed.tar.gz]Tomcat 5.0.28 Embed tar.gz[/url]
    在解压 Tomcat Embed 版本后，将其 lib 目录下所有 .jar 文件加入到 Java 项目的 classpath 中
，就可以着手在 Java 程序中启动 Tomcat 了。与普通的 Tomcat 配置类似，其运行需要创建如下组织的
结构：

Java代码

&#60;Server&#62;   
  &#60;Service&#62;   
    &#60;Connector /&#62;   
    &#60;Engine&#62;   
      &#60;Host&#62;   
        &#60;Context /&#62;   
      &#60;/Host&#62;   
    &#60;/Engine&#62;   
  &#60;/Service&#62;   
&#60;/Server&#62;  
&#60;Server&#62;
  &#60;Service&#62;
 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.blogcn.com/User8/flier_lu/blog/4740621.html"></a> </p>
<p>在开发基于 <span>Tomcat</span> 的 Web 程序时，一个比较头痛的问题就是如何将以接口分离的后台服务与前台</p>
<p>页面进行联调。以 <span>Tomcat</span> 为中心的运行环境中虽然能够支持 IDE 直接进行跟踪调试，但配置麻烦、速</p>
<p>度较慢且限制很多，总不如直接对后台程序进行调试来的方便。<br />
    一个较好的解决方法，是利用 <span>Tomcat</span> 的嵌入式版本，将 <span>Tomcat</span> 反过来嵌入到后台服务中，以后台</p>
<p>服务为主进行调试。这样一来 <span>Tomcat</span> 从整体容器变为后台服务的一种，在不改变行为的前提下，能够自</p>
<p>行定制调试环境。例如笔者开发的一个后台服务调试环境，支持基于命令行的简便移用的调试命令，直接</p>
<p>对各种后台服务进行控制，并通过前台界面验证结果，大大减轻了整合时的调试难度。</p>
<p>    虽然普通配置的 <span>Tomcat</span> 理论上也可以直接嵌入到后台程序，但推荐还是使用 <span>Tomcat</span> 定制的</p>
<p>Embeded 版本，这样集成度更高且性能较好。同时因为代码完全相同，不会存在调试环境内外的功能上的</p>
<p>差异问题。</p>
<p>    [url=http://apache.mirrors.versehost.com/jakarta/<span>tomcat</span>-5/v5.0.28/bin/jakarta-<span>tomcat</span>-</p>
<p>5.0.28-<span>embed</span>.tar.gz]<span>Tomcat</span> 5.0.28 <span>Embed</span> tar.gz[/url]</p>
<p>    在解压 <span>Tomcat</span> <span>Embed</span> 版本后，将其 lib 目录下所有 .jar 文件加入到 Java 项目的 classpath 中</p>
<p>，就可以着手在 Java 程序中启动 <span>Tomcat</span> 了。与普通的 <span>Tomcat</span> 配置类似，其运行需要创建如下组织的</p>
<p>结构：</p>
<div>
<div>Java代码</div>
</div>
<li><span><span>&lt;Server&gt;   </span></span></li>
<li><span>  &lt;Service&gt;   </span></li>
<li><span>    &lt;Connector /&gt;   </span></li>
<li><span>    &lt;Engine&gt;   </span></li>
<li><span>      &lt;Host&gt;   </span></li>
<li><span>        &lt;Context /&gt;   </span></li>
<li><span>      &lt;/Host&gt;   </span></li>
<li><span>    &lt;/Engine&gt;   </span></li>
<li><span>  &lt;/Service&gt;   </span></li>
<li><span>&lt;/Server&gt;  </span></li>
<pre style="DISPLAY: none">&lt;Server&gt;
  &lt;Service&gt;
    &lt;Connector /&gt;
    &lt;Engine&gt;
      &lt;Host&gt;
        &lt;Context /&gt;
      &lt;/Host&gt;
    &lt;/Engine&gt;
  &lt;/Service&gt;
&lt;/Server&gt;</pre>
<p>    只不过平时是配置 web.xml，而在嵌入版本中直接以程序方式完成。</p>
<p>    首先是建立 <span>Tomcat</span> 服务器，并指定其运行目录，此目录最好与 <span>Tomcat</span> <span>Embed</span> 版本路径相同。</p>
<div>
<div>Java代码</div>
</div>
<li><span><span>Embedded <span>tomcat</span> = </span><span>new</span><span> Embedded();;   </span></span></li>
<li><span>  </span></li>
<li><span><span>tomcat</span>.setCatalinaHome(path);;   </span></li>
<li><span><span>tomcat</span>.addEngine(engine);;   </span></li>
<li><span><span>tomcat</span>.setDebug(Logger.WARNING);;  </span></li>
<pre style="DISPLAY: none">  Embedded <span>tomcat</span> = new Embedded();;

  <span>tomcat</span>.setCatalinaHome(path);;
  <span>tomcat</span>.addEngine(engine);;
  <span>tomcat</span>.setDebug(Logger.WARNING);;</pre>
<p>    然后创建缺省 Engine 和 Host，并将 Host 加入到 Engine 中。这里的名字只是起到标记作用，但</p>
<p>Host 的路径最好与 <span>tomcat</span> 路径保持一致。同一 Engine 实际上是可以有多个虚拟 Host 的，对大型站</p>
<p>点的自动测试可以将之分离进行。</p>
<div>
<div>Java代码</div>
</div>
<li><span><span>Engine engine = <span>tomcat</span>.createEngine();;   </span></span></li>
<li><span>engine.setName(</span><span>&#8220;EspServer&#8221;</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>Host host = <span>tomcat</span>.createHost(</span><span>&#8220;localhost&#8221;</span><span>, <span>tomcat</span>.getCatalinaHome(); + </span><span>&#8220;/webapps&#8221;</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>engine.addChild(host);;   </span></li>
<li><span>engine.setDefaultHost(host.getName(););;  </span></li>
<pre style="DISPLAY: none">  Engine engine = <span>tomcat</span>.createEngine();;
  engine.setName("EspServer");;

  Host host = <span>tomcat</span>.createHost("localhost", <span>tomcat</span>.getCatalinaHome(); + "/webapps");;

  engine.addChild(host);;
  engine.setDefaultHost(host.getName(););;</pre>
<p>    对 Host 的内容填充，实际上就是具体 Web 应用程序的环境的建立过程。首先应该有一个缺省的</p>
<p>Context，在 URL 路径不匹配的时候会被使用。缺省 Context 的虚拟路径可以被设置为 &#8220;&#8221;，内部实现时</p>
<p>自动转换为 &#8220;/&#8221;；而其物理路径可以直接使用 <span>Tomcat</span> 自带的 /webapps/ROOT 内容，或者使用自定义内</p>
<p>容。</p>
<div>
<div>Java代码</div>
</div>
<li><span><span>Context ctxtRoot = <span>tomcat</span>.createContext(</span><span>&#8220;&#8221;</span><span>, host.getAppBase(); + </span><span>&#8220;/ROOT&#8221;</span><span>);;   </span></span></li>
<li><span>ctxtRoot.setPrivileged(</span><span>true</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>host.addChild(ctxtRoot);;  </span></li>
<pre style="DISPLAY: none">  Context ctxtRoot = <span>tomcat</span>.createContext("", host.getAppBase(); + "/ROOT");;
  ctxtRoot.setPrivileged(true);;

  host.addChild(ctxtRoot);;</pre>
<p>    值得注意的是这里设置 ROOT 为特权程序，其区别主要在于 Context 容器的 ClassLoader 等。具体</p>
<p>细节有兴趣的朋友可以参考 <span>Tomcat</span> 中[url=http://jakarta.apache.org/<span>tomcat</span>/<span>tomcat</span>-5.0-</p>
<p>doc/class-loader-howto.html]关于 classloading 的文档[/url]</p>
<div>
<div>Java代码</div>
</div>
<li><span><span>    Bootstrap   </span></span></li>
<li><span>         |   </span></li>
<li><span>      System   </span></li>
<li><span>         |   </span></li>
<li><span>      Common   </span></li>
<li><span>     /      \   </span></li>
<li><span>Catalina   Shared   </span></li>
<li><span>            /   \   </span></li>
<li><span>       Webapp1  Webapp2 &#8230;  </span></li>
<pre style="DISPLAY: none">     Bootstrap
          |
       System
          |
       Common
      /      \
 Catalina   Shared
             /   \
        Webapp1  Webapp2 ...</pre>
<p>    而对用户自己的 WebApp 实际上并不限于相同目录，完全可以任意设置，使用与创建 ROOT 程序类似</p>
<p>的方式即可。</p>
<p>    最后需要创建合适的 Connector 接受 http/https 请求。推荐将 web 服务绑定在本地 loopback 地</p>
<p>址上，限制只能本机访问。</p>
<div>
<div>Java代码</div>
</div>
<li><span><span>try</span><span>  </span></span></li>
<li><span>{   </span></li>
<li><span>  <span>tomcat</span>.addConnector(<span>tomcat</span>.createConnector(   </span></li>
<li><span>      InetAddress.getByName(</span><span>&#8220;127.0.0.1&#8243;</span><span>);, </span><span>8080</span><span>, </span><span>false</span><span>););;   </span></li>
<li><span>}   </span></li>
<li><span>catch</span><span> (UnknownHostException e);   </span></li>
<li><span>{   </span></li>
<li><span>  System.err.println(</span><span>&#8220;Bind <span>tomcat</span> server to 127.0.0.1:8080 failed.&#8221;</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>  e.printStackTrace();;   </span></li>
<li><span>  </span></li>
<li><span>  <span>tomcat</span> = </span><span>null</span><span>;   </span></li>
<li><span>}  </span></li>
<pre style="DISPLAY: none">  try
  {
    <span>tomcat</span>.addConnector(<span>tomcat</span>.createConnector(
        InetAddress.getByName("127.0.0.1");, 8080, false););;
  }
  catch (UnknownHostException e);
  {
    System.err.println("Bind <span>tomcat</span> server to 127.0.0.1:8080 failed.");;

    e.printStackTrace();;

    <span>tomcat</span> = null;
  }</pre>
<p>    完整的嵌入式 <span>Tomcat</span> 创建代码示例如下：</p>
<div>
<div>Java代码</div>
</div>
<li><span><span>private</span><span> Embedded createTomcat(String path);   </span></span></li>
<li><span>{   </span></li>
<li><span>  Embedded <span>tomcat</span> = </span><span>new</span><span> Embedded();;   </span></li>
<li><span>  </span></li>
<li><span>  <span>tomcat</span>.setCatalinaHome(path);;   </span></li>
<li><span>  </span></li>
<li><span>  Engine engine = <span>tomcat</span>.createEngine();;   </span></li>
<li><span>  engine.setName(</span><span>&#8220;EspServer&#8221;</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>  Host host = <span>tomcat</span>.createHost(</span><span>&#8220;localhost&#8221;</span><span>, <span>tomcat</span>.getCatalinaHome(); + </span><span>&#8220;/webapps&#8221;</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>  engine.addChild(host);;   </span></li>
<li><span>  engine.setDefaultHost(host.getName(););;   </span></li>
<li><span>  </span></li>
<li><span>  Context ctxtRoot = <span>tomcat</span>.createContext(</span><span>&#8220;&#8221;</span><span>, host.getAppBase(); + </span><span>&#8220;/ROOT&#8221;</span><span>);;   </span></li>
<li><span>  ctxtRoot.setPrivileged(</span><span>true</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>  host.addChild(ctxtRoot);;   </span></li>
<li><span>  </span></li>
<li><span>  String espPath = ConfigManager.getProperty(</span><span>&#8220;ESP_ROOTDIR&#8221;</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>  </span><span>if</span><span>(espPath == </span><span>null</span><span> || !</span><span>new</span><span> File(espPath);.exists(););   </span></li>
<li><span>  {   </span></li>
<li><span>    espPath = host.getAppBase(); + </span><span>&#8220;/esp&#8221;</span><span>;   </span></li>
<li><span>  </span></li>
<li><span>    </span><span>if</span><span>(!</span><span>new</span><span> File(espPath);.exists(););   </span></li>
<li><span>    {   </span></li>
<li><span>      System.err.println(</span><span>&#8220;You should set ESP_ROOTDIR in esp.config.&#8221;</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>      </span><span>return</span><span> </span><span>null</span><span>;   </span></li>
<li><span>    }   </span></li>
<li><span>  }   </span></li>
<li><span>  </span></li>
<li><span>  Context ctxtEsp = <span>tomcat</span>.createContext(</span><span>&#8220;/esp&#8221;</span><span>, espPath);;   </span></li>
<li><span>  </span></li>
<li><span>  host.addChild(ctxtEsp);;   </span></li>
<li><span>  </span></li>
<li><span>  <span>tomcat</span>.addEngine(engine);;   </span></li>
<li><span>  <span>tomcat</span>.setDebug(Logger.WARNING);;   </span></li>
<li><span>  </span></li>
<li><span>  </span><span>try</span><span>  </span></li>
<li><span>  {   </span></li>
<li><span>    <span>tomcat</span>.addConnector(<span>tomcat</span>.createConnector(   </span></li>
<li><span>        InetAddress.getByName(</span><span>&#8220;127.0.0.1&#8243;</span><span>);, </span><span>8080</span><span>, </span><span>false</span><span>););;   </span></li>
<li><span>  }   </span></li>
<li><span>  </span><span>catch</span><span> (UnknownHostException e);   </span></li>
<li><span>  {   </span></li>
<li><span>    System.err.println(</span><span>&#8220;Bind <span>tomcat</span> server to 127.0.0.1:8080 failed.&#8221;</span><span>);;   </span></li>
<li><span>  </span></li>
<li><span>    e.printStackTrace();;   </span></li>
<li><span>  </span></li>
<li><span>    <span>tomcat</span> = </span><span>null</span><span>;   </span></li>
<li><span>  }   </span></li>
<li><span>  </span></li>
<li><span>  </span><span>return</span><span> <span>tomcat</span>;   </span></li>
<li><span>}  </span></li>
<pre style="DISPLAY: none">private Embedded createTomcat(String path);
{
  Embedded <span>tomcat</span> = new Embedded();;

  <span>tomcat</span>.setCatalinaHome(path);;

  Engine engine = <span>tomcat</span>.createEngine();;
  engine.setName("EspServer");;

  Host host = <span>tomcat</span>.createHost("localhost", <span>tomcat</span>.getCatalinaHome(); + "/webapps");;

  engine.addChild(host);;
  engine.setDefaultHost(host.getName(););;

  Context ctxtRoot = <span>tomcat</span>.createContext("", host.getAppBase(); + "/ROOT");;
  ctxtRoot.setPrivileged(true);;

  host.addChild(ctxtRoot);;

  String espPath = ConfigManager.getProperty("ESP_ROOTDIR");;

  if(espPath == null || !new File(espPath);.exists(););
  {
    espPath = host.getAppBase(); + "/esp";

    if(!new File(espPath);.exists(););
    {
      System.err.println("You should set ESP_ROOTDIR in esp.config.");;

      return null;
    }
  }

  Context ctxtEsp = <span>tomcat</span>.createContext("/esp", espPath);;

  host.addChild(ctxtEsp);;

  <span>tomcat</span>.addEngine(engine);;
  <span>tomcat</span>.setDebug(Logger.WARNING);;

  try
  {
    <span>tomcat</span>.addConnector(<span>tomcat</span>.createConnector(
        InetAddress.getByName("127.0.0.1");, 8080, false););;
  }
  catch (UnknownHostException e);
  {
    System.err.println("Bind <span>tomcat</span> server to 127.0.0.1:8080 failed.");;

    e.printStackTrace();;

    <span>tomcat</span> = null;
  }

  return <span>tomcat</span>;
}</pre>
<p>    然后就可以在合适的时候调用其 start/stop 方法启动或停止服务，感觉比标准配置的 <span>tomcat</span> 反映</p>
<p>迅速许多。<br />
    此外可以通过一个辅助类的方法 ServerInfo.getServerInfo() 获取当前 <span>Tomcat</span> 版本信息用于显式</p>
<p>状态</p>
<p>    在此过程中有一些需要注意的细节问题。<br />
    1.运行此程序时需要使用 JDK 而非 JRE，因为 <span>Tomcat</span> 需要动态编译 JSP 页面，可能还需要手工把</p>
<p>JDK 的 /lib/tools.jar 加入到项目 classpath 中。<br />
    2.因为嵌入式版本 <span>Tomcat</span> 没有 common/lib 目录，如果碰到 JAXP 的 Provider 没有找到的 bug，</p>
<p>可能需要直接将 xercesImpl.jar 等实现包复制到 JDK 的 /jre/lib/endorsed 目录下。<br />
    3.注意 classpath 中不要有其他版本 <span>tomcat</span> 的包，否则可能会出现冲突。</p>
<p>    如果需要进一步了解相关信息，可以参考 <span>Tomcat</span> 自带 JavaDoc 文档，或者 O&#8217;Reilly 的</p>
<p><a href="http://www.onjava.com/lpt/a/1547" target="_blank">Embedding <span>Tomcat</span> Into Java Applications</a> 一文。</p>
<p>原文地址：<a href="http://www.blogcn.com/User8/flier_lu/blog/4740621.html">http://www.blogcn.com/User8/flier_lu/blog/4740621.html</a></p>
<div id="crp_related"><h3>您可能也会关注:</h3><ul><li><a href="http://javaflex.net/flex/springblazedschannelset/" rel="bookmark" class="crp_title">spring+blazeds动态配置channelSet</a></li><li><a href="http://javaflex.net/flex/mxml-create-array/" rel="bookmark" class="crp_title">1.8在MXML中创建数组或对象</a></li><li><a href="http://javaflex.net/flex/mxml-create-array-2/" rel="bookmark" class="crp_title">1.8在MXML中创建数组或对象</a></li><li><a href="http://javaflex.net/flex/mxml-add-event-listener/" rel="bookmark" class="crp_title">1.6在MXML中添加事件监听器</a></li><li><a href="http://javaflex.net/flex/flex-labelfunction/" rel="bookmark" class="crp_title">2.6设置控件的labelFunction</a></li></ul></div>

<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://delicious.com/post?url=http://javaflex.net/java/tomcat/&amp;title=%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F+Tomcat+%E7%AE%80%E5%8C%96%E7%A8%8B%E5%BA%8F%E8%B0%83%E8%AF%95" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://javaflex.net/java/tomcat/&amp;t=%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F+Tomcat+%E7%AE%80%E5%8C%96%E7%A8%8B%E5%BA%8F%E8%B0%83%E8%AF%95" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F+Tomcat+%E7%AE%80%E5%8C%96%E7%A8%8B%E5%BA%8F%E8%B0%83%E8%AF%95+-+http://b2l.me/q35h9+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://javaflex.net/java/tomcat/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="sexy-googlebookmarks">
			<a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://javaflex.net/java/tomcat/&amp;title=%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F+Tomcat+%E7%AE%80%E5%8C%96%E7%A8%8B%E5%BA%8F%E8%B0%83%E8%AF%95" rel="nofollow" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="sexy-googlereader">
			<a href="http://www.google.com/reader/link?url=http://javaflex.net/java/tomcat/&amp;title=%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F+Tomcat+%E7%AE%80%E5%8C%96%E7%A8%8B%E5%BA%8F%E8%B0%83%E8%AF%95&amp;srcUrl=http://javaflex.net/java/tomcat/&amp;srcTitle=%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F+Tomcat+%E7%AE%80%E5%8C%96%E7%A8%8B%E5%BA%8F%E8%B0%83%E8%AF%95&amp;snippet=POST_SUMMARY" rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="sexy-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://javaflex.net/java/tomcat/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://javaflex.net/java/tomcat/&amp;n=%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F+Tomcat+%E7%AE%80%E5%8C%96%E7%A8%8B%E5%BA%8F%E8%B0%83%E8%AF%95&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
		<li class="sexy-dzone">
			<a href="http://www.dzone.com/links/add.html?url=http://javaflex.net/java/tomcat/&amp;title=%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F+Tomcat+%E7%AE%80%E5%8C%96%E7%A8%8B%E5%BA%8F%E8%B0%83%E8%AF%95&amp;description=POST_SUMMARY" rel="nofollow" title="Add this to DZone">Add this to DZone</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://javaflex.net/java/tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
