﻿<?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-The NoteBook of EricKong-随笔分类-tomcat</title><link>http://www.blogjava.net/jjshcc/category/45346.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 15 Jul 2015 21:20:40 GMT</lastBuildDate><pubDate>Wed, 15 Jul 2015 21:20:40 GMT</pubDate><ttl>60</ttl><item><title> Tomcat配置https及访问http自动跳转至https</title><link>http://www.blogjava.net/jjshcc/archive/2015/07/15/426226.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Wed, 15 Jul 2015 00:51:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2015/07/15/426226.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/426226.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2015/07/15/426226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/426226.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/426226.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: https介绍:&nbsp;&nbsp;&nbsp;HTTPS（全称：Hypertext Transfer Protocol over Secure Socket Layer），是以安全为目标的HTTP通道，简单讲是HTTP的安全版。即HTTP下加入SSL层，HTTPS的安全基础是SSL，因此加密的详细内容就需要SSL。 它是一个URI scheme（抽象标识符体系），句法类同http:体系。用于...&nbsp;&nbsp;<a href='http://www.blogjava.net/jjshcc/archive/2015/07/15/426226.html'>阅读全文</a><img src ="http://www.blogjava.net/jjshcc/aggbug/426226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2015-07-15 08:51 <a href="http://www.blogjava.net/jjshcc/archive/2015/07/15/426226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat优化</title><link>http://www.blogjava.net/jjshcc/archive/2015/05/11/424994.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Mon, 11 May 2015 08:11:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2015/05/11/424994.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/424994.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2015/05/11/424994.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/424994.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/424994.html</trackback:ping><description><![CDATA[<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14"><strong style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">1. 如何加大tomcat连接数</strong></span></span></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">在tomcat配置文件server.xml中的&lt;Connector ... /&gt;配置中，和连接数相关的参数有：</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">maxThreads&nbsp;： tomcat起动的最大线程数，即同时处理的任务个数，默认值为200。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">minProcessors：最小空闲连接线程数，用于提高系统处理性能，默认值为10 。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">maxProcessors：最大连接线程数，即：并发处理的最大请求数，默认值为75 。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">acceptCount： 当tomcat起动的线程数达到最大时，接受排队的请求个数，默认值为100。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">minSpareThreads&nbsp;：Tomcat初始化时创建的线程数。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">maxSpareThreads&nbsp;：一旦创建的线程超过这个值，Tomcat就会关闭不再需要的socket线程。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">enableLookups：是否反查域名，取值为：true或false。 缺省值为false,表示使用客户端主机名的DNS解析功能，被ServletRequest.getRemoteHost方法调用。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">connectionTimeout：网络连接超时，单位：毫秒。设置为0表示永不超时，这样设置有隐患的。通常可设置为30000毫秒。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数，应同时加大这两个参数。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">web server允许的最大连接数还受制于操作系统的内核参数设置，通常Windows是2000个左右，Linux是1000个左右。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">Unix中如何设置这些参数，请参阅<a style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(100,102,179); text-decoration: underline; padding-top: 0px" href="http://www.ee2ee.com/tech_art/2/30.html" target="_blank">Unix常用监控和管理命令</a></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14">tomcat5中的配置示例：</span></span></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14">&lt;Connector port="8090" maxHttpHeaderSize="8169"&nbsp; maxThreads="1000" minSpareThreads="75" maxSpareThreads="300"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8649" acceptCount="100" connectionTimeout="50000" disableUploadTimeout="true" URIEncoding="GBK"/&gt;</span></span></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14">&lt;Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080" minProcessors="10" maxProcessors="1024" enableLookups="false" redirectPort="8443" acceptCount="1024" debug="0" connectionTimeout="30000" /&gt;<span class="Apple-converted-space">&nbsp;</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />对于其他端口的侦听配置，以此类推。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><strong style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">2. tomcat中如何禁止列目录下的文件</strong></span></span></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14">在{tomcat_home}/conf/web.xml中，把listings参数设置成false即可，如下：</span></span></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14">&lt;servlet&gt; ... &lt;init-param&gt; &lt;param-name&gt;listings&lt;/param-name&gt; &lt;param-value&gt;false&lt;/param-value&gt; &lt;/init-param&gt; ... &lt;/servlet&gt;</span></span></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="f14"><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><strong style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">3. 如何加大tomcat可以使用的内存</strong></span></span></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">tomcat默认可以使用的内存为128MB，在较大型的应用项目中，这点内存是不够的，需要调大。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />Unix下，在文件{tomcat_home}/bin/catalina.sh的前面，增加如下设置：</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】' 需要把这个两个参数值调大。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">例如： JAVA_OPTS='-Xms256m -Xmx512m' 表示初始化内存为256MB，可以使用的最大内存为512MB 。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">export JAVA_HOME='/home/ftpuser/xjSheetHome/java/jdk1.5.0_22/'</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">JAVA_OPTS="-Xms1500m -Xmx1500m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m -Dfile.encoding=GBK"</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">参数说明：</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">-Xms 是指设定程序启动时占用内存大小。一般来讲，大点，程序会启动的 快一点，但是也可能会导致机器暂时间变慢。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">-Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占 用更多的内存，超出了这个设置值，就会抛出OutOfMemory 异常。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">-Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序，看一个线程 大约需要占用多少内存，可能会有多少线程同时运行等。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">-XX:PermSize设置非堆内存初始值，默认是物理内存的1/64 。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">-XX:MaxPermSize设置最大非堆内存的大小，默认是物理内存的1/4。</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(250,247,239); text-indent: 0px; margin: 10px auto; padding-left: 0px; padding-right: 0px; font: 14px/21px verdana, 'ms song', Arial, Helvetica, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(57,57,57); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&lt;Context path="/Sheet" defaultSessionTimeOut="3600" docBase="/home/user/Sheet"&nbsp; &gt;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp; &lt;Resource name="jdbc/app" auth="Container"<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="javax.sql.DataSource"<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username="SHEET" password="SHEET"<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverClassName="oracle.jdbc.driver.OracleDriver"<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url="jdbc:oracle:thin:@136.24.248.106:1521:kf"<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxActive="1000" maxIdle="75"/&gt;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp; &lt;ResourceLink name="UserTransaction"<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global="UserTransaction"<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="javax.transaction.UserTransaction"/&gt;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&lt;/Context&gt;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />参数说明：<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />defaultSessionTimeOut：设置会话时间 单位为秒<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />maxActive&nbsp;： 连接池的最大数据库连接数。设为0表示无限制。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />maxIdle&nbsp;：可以同时闲置在连接池中的连接的最大数&nbsp;<span class="Apple-converted-space">&nbsp;</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />maxWait&nbsp;： 最大超时时间，以毫秒计</p><img src ="http://www.blogjava.net/jjshcc/aggbug/424994.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2015-05-11 16:11 <a href="http://www.blogjava.net/jjshcc/archive/2015/05/11/424994.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 并发优化</title><link>http://www.blogjava.net/jjshcc/archive/2015/05/11/424993.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Mon, 11 May 2015 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2015/05/11/424993.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/424993.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2015/05/11/424993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/424993.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/424993.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首先先介绍一款知名的网站压力测试工具:webbench.Webbench能测试处在相同硬件上，不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容：每分钟相应请求数和每秒钟传输数据量。webbench不但能具有便准静态页面的测试能力，还能对动态页面（ASP,PHP,JAVA,CGI）进 行测试的能力。还有就是他支持对含有SSL的安全网站例如...&nbsp;&nbsp;<a href='http://www.blogjava.net/jjshcc/archive/2015/05/11/424993.html'>阅读全文</a><img src ="http://www.blogjava.net/jjshcc/aggbug/424993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2015-05-11 16:03 <a href="http://www.blogjava.net/jjshcc/archive/2015/05/11/424993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TOMCAT优化</title><link>http://www.blogjava.net/jjshcc/archive/2015/05/11/424992.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Mon, 11 May 2015 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2015/05/11/424992.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/424992.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2015/05/11/424992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/424992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/424992.html</trackback:ping><description><![CDATA[<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><span style="color: blue"><span style="font-size: 14px">1.内存设置(VM参数调优)</span></span><br /><span style="color: blue">(1). Windows环境下，是tomcat解压版(执行startup.bat启动tomcat) ,解决办法:</span><br />修改&#8220;%TOMCAT_HOME%\bin\catalina.bat&#8221;文件，在文件开头增加如下设置：<br /><span style="color: red">set JAVA_OPTS=-Xms512m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=512m</span><br />备注：一定加在catalina.bat最前面。<br /><span style="color: blue">(2). Windows环境下，是tomcat安装版(利用windows的系统服务启动tomcat),解决办法:</span><br />修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\JavaOptions<br />原值为:<br />-Dcatalina.home=E:\Tomcat 6.0<br />-Dcatalina.base=E:\Tomcat 6.0<br />-Djava.endorsed.dirs=E:\Tomcat 6.0\common\endorsed<br />-Djava.io.tmpdir=E:\Tomcat 6.0\temp<br />-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager<br />-Djava.util.logging.config.file=E:\Tomcat 6.0\conf\logging.properties<br />加入：<br /><span style="color: red">Xms512m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=512m</span><br />重起tomcat服务,设置生效。<br /><span style="color: blue">(3). Linux环境下, ,解决办法:</span><br />修改&#8220;%TOMCAT_HOME%\bin\catalina.sh&#8221;文件，在文件开头增加如下设置：JAVA_OPTS=&#8217;-Xms256m -Xmx512m&#8217;<br /><br />各参数详解：<br /><span style="color: red">-Xms：设置JVM初始内存大小(默认是物理内存的1/64)<br />-Xmx：设置JVM可以使用的最大内存(默认是物理内存的1/4，建议：物理内存80%)<br />-Xmn：设置JVM最小内存(128-256m就够了,一般不设置)</span><br />默认空余堆内存小于 40%时，JVM就会增大堆直到-Xmx的最大限制；空余堆内存大于70%时，JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、 -Xmx相等以避免在每次GC 后调整堆的大小。<br />在较大型的应用项目中，默认的内存是不够的，有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误&#8220;java.lang.OutOfMemoryError: Java heap space&#8221;，从而导致客户端显示500错误。<br /><br /><span style="color: red">-XX:PermSize ：为JVM启动时Perm的内存大小<br />-XX:MaxPermSize ：为最大可占用的Perm内存大小(默认为32M)<br />-XX:MaxNewSize，默认为16M</span><br />PermGen space的全称是Permanent Generation space,是指内存的永久保存区域，这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中，它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理，所以如果你的应用中有很CLASS的话,就很可能出现&#8220;java.lang.OutOfMemoryError: PermGen space&#8221;错误。<br />对于WEB项目，jvm加载类时，永久域中的对象急剧增加，从而使jvm不断调整永久域大小，为了避免调整)，你可以使用更多的参数配置。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小,那么就会产生此错误信息了。<br />其它参数：<br /><span style="color: red">-XX:NewSize ：默认为2M，此值设大可调大新对象区，减少Full GC次数<br />-XX:NewRatio ：改变新旧空间的比例，意思是新空间的尺寸是旧空间的1/8（默认为8）<br />-XX:SurvivorRatio ：改变Eden对象空间和残存空间的尺寸比例，意思是Eden对象空<br />间的尺寸比残存空间大survivorRatio+2倍（缺省值是10）<br />-XX:userParNewGC 可用来设置并行收集【多CPU】<br />-XX:ParallelGCThreads 可用来增加并行度【多CPU】<br />-XXUseParallelGC 设置后可以使用并行清除收集器【多CPU】</span><br /><span style="color: blue"><span style="font-size: 14px">2.修改tomcat让其支持NIO</span></span><br />修改前：<br /><span style="color: red">protocol="HTTP/1.1"</span><span class="Apple-converted-space">&nbsp;</span>connectionTimeout="20000" redirectPort="8443"/&gt;<br />修改成支持NIO的类型，配置如下 ：<br /><span style="color: red">protocol="org.apache.coyote.http11.Http11NioProtocol "</span><span class="Apple-converted-space">&nbsp;</span>connectionTimeout="20000" redirectPort="8443" /&gt;<br /><span style="color: blue"><span style="font-size: 14px">3.并发数设置</span></span><br />默认的tomcat配置，并发测试时，可能30个USER上去就当机了。<br />添加<br /><br /><span style="color: red">maxThreads="600" //最大线程数<br />minSpareThreads="100" //初始化时创建的线程数<br />maxSpareThreads="500" //一旦线程超过这个值，Tomcat会关闭不需要的socket线程<br />acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时，可以放到<br />处理队列中的请求数，超过这个数的请求将不予处理</span><br />connectionTimeout="20000"<br />redirectPort="8443" /&gt;<br /><br />或者<br /><span style="color: red">name="tomcatThreadPool"</span><span class="Apple-converted-space">&nbsp;</span>namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="400" /&gt;<br /><br /><span style="color: red">executor="tomcatThreadPool"</span><span class="Apple-converted-space">&nbsp;</span>port="80" protocol="HTTP/1.1" connectionTimeout="20000" enableLookups="false"<br />redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000" /&gt;<br /><span style="color: blue"><span style="font-size: 14px">4.Java虚拟机调优</span></span><br />应该选择SUN的JVM，在满足项目需要的前提下，尽量选用版本较高的JVM，一般来说高版本产品在速度和效率上比低版本会有改进。 JDK1.4比JDK1.3性能提高了近10%-20%，JDK1.5比JDK1.4性能提高25%-75%。<br /><span style="color: blue"><span style="font-size: 14px">5.禁用DNS查询</span></span><br />设置enableLookups="false"：<br /><span style="color: red">enableLookups="false"</span><span class="Apple-converted-space">&nbsp;</span>redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000" /&gt;<br />　当web应用程序向要记录客户端的信息时，它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络，并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程，这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭 DNS查询，方式是修改server.xml文件中的enableLookups参数值为false。<br /><span style="color: blue"><span style="font-size: 14px">6.设置解决乱码问题</span></span><br /><span style="color: red">URIEncoding="UTF-8"</span><span class="Apple-converted-space">&nbsp;</span>acceptCount="1000" /&gt;<br /></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">二、TOMCAT内存监控</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">1.设置tomcat的perm size:</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><img style="border-bottom: medium none; border-left: medium none; max-width: 100%; border-top: medium none; border-right: medium none" alt="" src="http://img.blog.csdn.net/20130625112938875?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh4NjI0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" /></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">2.开启监控</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">在命令行输入jconsole，在弹出窗口中建立本地端口监控，如下图：</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><img style="border-bottom: medium none; border-left: medium none; max-width: 100%; border-top: medium none; border-right: medium none" alt="" src="http://img.blog.csdn.net/20130625113152734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh4NjI0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" /><img style="border-bottom: medium none; border-left: medium none; max-width: 100%; border-top: medium none; border-right: medium none" alt="" src="http://img.blog.csdn.net/20130625113309812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh4NjI0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" /></p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">使用安装版Tomcat 6.0 ，打开tomcat界面选择java这一项，在java options:<br />加入<br /></p>
<div style="text-align: left; text-transform: none; background-color: rgb(231,229,220); text-indent: 0px; margin: 18px 0px; width: 937px; font: 12px/26px Consolas, 'Courier New', Courier, mono, serif; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); overflow: auto; word-spacing: 0px; padding-top: 1px; -webkit-text-stroke-width: 0px" class="dp-highlighter">
<div style="padding-left: 45px" class="bar">
<div style="border-left: rgb(153,153,153) 3px solid; padding-bottom: 10px; background-color: rgb(248,248,248); padding-left: 10px; padding-right: 8px; font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; padding-top: 3px" class="tools">Java代码<span class="Apple-converted-space">&nbsp;</span><a style="background-image: none; border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; color: rgb(160,160,160); font-size: 9px; border-top: medium none; border-right: medium none; text-decoration: none; padding-top: 0px" title="复制代码" href="http://www.iteye.com/problems/74152#" target="_blank"><img style="border-bottom: medium none; border-left: medium none; max-width: 100%; border-top: medium none; border-right: medium none" alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a><span class="Apple-converted-space">&nbsp;</span><a style="background-image: none; border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; color: rgb(160,160,160); font-size: 9px; border-top: medium none; border-right: medium none; text-decoration: none; padding-top: 0px" title="收藏这段代码" href="http://blog.csdn.net/zhx624/article/details/9168529" target="_blank"><img style="border-bottom: medium none; border-left: medium none; max-width: 100%; border-top: medium none; border-right: medium none" class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="border-bottom: medium none; border-left: medium none; max-width: 100%; border-top: medium none; border-right: medium none" class="spinner" alt="" src="http://www.iteye.com/images/spinner.gif" /></a></div></div>
<ol style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; background-color: rgb(255,255,255); list-style-type: decimal; margin: 0px 0px 1px 45px; padding-left: 0px; padding-right: 0px; color: rgb(92,92,92); border-top: medium none; border-right: medium none; padding-top: 0px" class="dp-j"><li style="list-style-position: outside; border-bottom-style: none; border-left: rgb(153,153,153) 3px solid; padding-bottom: 0px !important; line-height: 18px; border-right-style: none; background-color: rgb(248,248,248); list-style-type: decimal-leading-zero; margin: 0px; padding-left: 10px !important; padding-right: 3px !important; border-top-style: none; color: rgb(85,85,85); padding-top: 0px !important"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">-Djava.rmi.server.hostname=</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(192,0,0); border-top: medium none; border-right: medium none; padding-top: 0px" class="number">127.0</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">.</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(192,0,0); border-top: medium none; border-right: medium none; padding-top: 0px" class="number">0.1</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">&nbsp;</span></span></li><li style="list-style-position: outside; border-bottom-style: none; border-left: rgb(153,153,153) 3px solid; padding-bottom: 0px !important; line-height: 18px; border-right-style: none; background-color: rgb(248,248,248); list-style-type: decimal-leading-zero; margin: 0px; padding-left: 10px !important; padding-right: 3px !important; border-top-style: none; color: rgb(85,85,85); padding-top: 0px !important"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">-Dcom.sun.management.jmxremote.port=<span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(192,0,0); border-top: medium none; border-right: medium none; padding-top: 0px" class="number">8088</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">&nbsp;</span></span></li><li style="list-style-position: outside; border-bottom-style: none; border-left: rgb(153,153,153) 3px solid; padding-bottom: 0px !important; line-height: 18px; border-right-style: none; background-color: rgb(248,248,248); list-style-type: decimal-leading-zero; margin: 0px; padding-left: 10px !important; padding-right: 3px !important; border-top-style: none; color: rgb(85,85,85); padding-top: 0px !important"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">-Dcom.sun.management.jmxremote.ssl=<span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: blue; border-top: medium none; font-weight: bold; border-right: medium none; padding-top: 0px" class="keyword">false</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">&nbsp;</span></span></li><li style="list-style-position: outside; border-bottom-style: none; border-left: rgb(153,153,153) 3px solid; padding-bottom: 0px !important; line-height: 18px; border-right-style: none; background-color: rgb(248,248,248); list-style-type: decimal-leading-zero; margin: 0px; padding-left: 10px !important; padding-right: 3px !important; border-top-style: none; color: rgb(85,85,85); padding-top: 0px !important"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">-Dcom.sun.management.jmxremote.authenticate=<span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: blue; border-top: medium none; font-weight: bold; border-right: medium none; padding-top: 0px" class="keyword">false</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">&nbsp;</span></span></li></ol></div>
<div style="text-align: left; text-transform: none; background-color: rgb(231,229,220); text-indent: 0px; margin: 18px 0px; width: 937px; font: 12px/26px Consolas, 'Courier New', Courier, mono, serif; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); overflow: auto; word-spacing: 0px; padding-top: 1px; -webkit-text-stroke-width: 0px" class="dp-highlighter bg_java">
<div style="padding-left: 45px" class="bar">
<div style="border-left: rgb(153,153,153) 3px solid; padding-bottom: 10px; background-color: rgb(248,248,248); padding-left: 10px; padding-right: 8px; font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; padding-top: 3px" class="tools"><strong>[java]</strong><span class="Apple-converted-space">&nbsp;</span><a style="background-image: none; border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; color: rgb(160,160,160); font-size: 9px; border-top: medium none; border-right: medium none; text-decoration: none; padding-top: 0px" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/zhx624/article/details/9168529#">view plain</a><a style="background-image: none; border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; color: rgb(160,160,160); font-size: 9px; border-top: medium none; border-right: medium none; text-decoration: none; padding-top: 0px" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/zhx624/article/details/9168529#">copy</a><a style="background-image: none; border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; color: rgb(160,160,160); font-size: 9px; border-top: medium none; border-right: medium none; text-decoration: none; padding-top: 0px" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/zhx624/article/details/9168529#">print</a><a style="background-image: none; border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; color: rgb(160,160,160); font-size: 9px; border-top: medium none; border-right: medium none; text-decoration: none; padding-top: 0px" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/zhx624/article/details/9168529#">?</a><a style="background-image: none; border-bottom: medium none; border-left: medium none; padding-bottom: 0px; text-indent: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; color: rgb(160,160,160); font-size: 9px; border-top: medium none; border-right: medium none; text-decoration: none; padding-top: 0px" title="在CODE上查看代码片" href="https://code.csdn.net/snippets/165608" target="_blank"><img style="border-bottom: medium none; position: relative; border-left: medium none; max-width: 100%; border-top: medium none; top: 1px; border-right: medium none; left: 2px" alt="在CODE上查看代码片" src="https://code.csdn.net/assets/CODE_ico.png" width="12" height="12" /></a><a style="background-image: none; border-bottom: medium none; border-left: medium none; padding-bottom: 0px; text-indent: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; color: rgb(160,160,160); font-size: 9px; border-top: medium none; border-right: medium none; text-decoration: none; padding-top: 0px" title="派生到我的代码片" href="https://code.csdn.net/snippets/165608/fork" target="_blank"><img style="border-bottom: medium none; position: relative; border-left: medium none; max-width: 100%; border-top: medium none; top: 2px; border-right: medium none; left: 2px" alt="派生到我的代码片" src="https://code.csdn.net/assets/ico_fork.svg" width="12" height="12" /></a> 
<div style="z-index: 99; position: absolute; width: 22px; height: 12px; top: 4206px; left: 411px"><embed id="ZeroClipboardMovie_1" height="12" name="ZeroClipboardMovie_1" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" width="22" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="false" flashvars="id=1&amp;width=22&amp;height=12" wmode="transparent"></div></div></div>
<ol style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; background-color: rgb(255,255,255); list-style-type: decimal; margin: 0px 0px 1px 45px; padding-left: 0px; padding-right: 0px; color: rgb(92,92,92); border-top: medium none; border-right: medium none; padding-top: 0px" class="dp-j"><li style="list-style-position: outside; border-bottom-style: none; border-left: rgb(153,153,153) 3px solid; padding-bottom: 0px !important; line-height: 18px; border-right-style: none; background-color: rgb(255,255,255); list-style-type: decimal-leading-zero; margin: 0px; padding-left: 10px !important; padding-right: 3px !important; border-top-style: none; padding-top: 0px !important" class="alt"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">-Djava.rmi.server.hostname=</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(192,0,0); border-top: medium none; border-right: medium none; padding-top: 0px" class="number">127.0</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">.</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(192,0,0); border-top: medium none; border-right: medium none; padding-top: 0px" class="number">0.1</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">&nbsp;&nbsp;</span></span></li><li style="list-style-position: outside; border-bottom-style: none; border-left: rgb(153,153,153) 3px solid; padding-bottom: 0px !important; line-height: 18px; border-right-style: none; background-color: rgb(248,248,248); list-style-type: decimal-leading-zero; margin: 0px; padding-left: 10px !important; padding-right: 3px !important; border-top-style: none; color: rgb(85,85,85); padding-top: 0px !important"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">-Dcom.sun.management.jmxremote.port=<span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(192,0,0); border-top: medium none; border-right: medium none; padding-top: 0px" class="number">8088</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">&nbsp;&nbsp;</span></span></li><li style="list-style-position: outside; border-bottom-style: none; border-left: rgb(153,153,153) 3px solid; padding-bottom: 0px !important; line-height: 18px; border-right-style: none; background-color: rgb(255,255,255); list-style-type: decimal-leading-zero; margin: 0px; padding-left: 10px !important; padding-right: 3px !important; border-top-style: none; padding-top: 0px !important" class="alt"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">-Dcom.sun.management.jmxremote.ssl=<span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: blue; border-top: medium none; font-weight: bold; border-right: medium none; padding-top: 0px" class="keyword">false</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">&nbsp;&nbsp;</span></span></li><li style="list-style-position: outside; border-bottom-style: none; border-left: rgb(153,153,153) 3px solid; padding-bottom: 0px !important; line-height: 18px; border-right-style: none; background-color: rgb(248,248,248); list-style-type: decimal-leading-zero; margin: 0px; padding-left: 10px !important; padding-right: 3px !important; border-top-style: none; color: rgb(85,85,85); padding-top: 0px !important"><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">-Dcom.sun.management.jmxremote.authenticate=<span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: blue; border-top: medium none; font-weight: bold; border-right: medium none; padding-top: 0px" class="keyword">false</span><span style="border-bottom: medium none; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: black; border-top: medium none; border-right: medium none; padding-top: 0px">&nbsp;&nbsp;</span></span></li></ol></div>
<p style="text-align: left; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">使用jconsole 127.0.0.1:8088可以连接成功，也能看到jvm运行情况，<br />但此时访问已经部署的应用，却提示&#8220;无法显示网页&#8221;<br />今天又研究了一会，猜想了一下是不是这个端口独占的，不能和应用冲突，把Dcom.sun.management.jmxremote.port=8088 改为80， 重启tomcat 果然，应用可以访问。之后去网上看来些相关信息，确实为两个端口，不能占用。</p><img src ="http://www.blogjava.net/jjshcc/aggbug/424992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2015-05-11 15:58 <a href="http://www.blogjava.net/jjshcc/archive/2015/05/11/424992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache HTTP Server 与 Tomcat 的三种连接方式介绍</title><link>http://www.blogjava.net/jjshcc/archive/2015/03/19/423637.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Thu, 19 Mar 2015 09:35:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2015/03/19/423637.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/423637.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2015/03/19/423637.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/423637.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/423637.html</trackback:ping><description><![CDATA[<p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接。事实上 Tomcat 本身已经提供了 HTTP 服务，该服务默认的端口是 8080，装好 tomcat 后通过 8080 端口可以直接使用 Tomcat 所运行的应用程序，你也可以将该端口改为 80。</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">既然 Tomcat 本身已经可以提供这样的服务，我们为什么还要引入 Apache 或者其他的一些专门的 HTTP 服务器呢？原因有下面几个：</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">1.	提升对静态文件的处理性能</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">2.	利用 Web 服务器来做负载均衡以及容错</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">3.	无缝的升级应用程序</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">这三点对一个 web 网站来说是非常之重要的，我们希望我们的网站不仅是速度快，而且要稳定，不能因为某个 Tomcat 宕机或者是升级程序导致用户访问不了，而能完成这几个功能的、最好的 HTTP 服务器也就只有 apache 的 http server 了，它跟 tomcat 的结合是最紧密和可靠的。</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">接下来我们介绍三种方法将 apache 和 tomcat 整合在一起。</p><h2>JK</h2><p style="margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">这是最常见的方式，你可以在网上找到很多关于配置JK的网页，当然最全的还是其官方所提供的文档。JK 本身有两个版本分别是 1 和 2，目前 1 最新的版本是 1.2.19，而版本 2 早已经废弃了，以后不再有新版本的推出了，所以建议你采用版本 1。</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的，Tomcat 默认的 AJP Connector 的端口是 8009。JK 本身提供了一个监控以及管理的页面 jkstatus，通过 jkstatus 可以监控 JK 目前的工作状态以及对到 tomcat 的连接进行设置，如下图所示：</p><h5>图 1：监控以及管理的页面 jkstatus</h5><img alt="图 1：监控以及管理的页面 jkstatus" border="0" src="http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/images/image002.jpg" width="554" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 12.8000001907349px; vertical-align: baseline; font-family: Arial, sans-serif; line-height: 15.3600006103516px; background-color: #ffffff;" /><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">在这个图中我们可以看到当前JK配了两个连接分别到 8109 和 8209 端口上，目前 s2 这个连接是停止状态，而 s1 这个连接自上次重启后已经处理了 47 万多个请求，流量达到 6.2 个 G，最大的并发数有 13 等等。我们也可以利用 jkstatus 的管理功能来切换 JK 到不同的 Tomcat 上，例如将 s2 启用，并停用 s1，这个在更新应用程序的时候非常有用，而且整个切换过程对用户来说是透明的，也就达到了无缝升级的目的。关于 JK 的配置文章网上已经非常多了，这里我们不再详细的介绍整个配置过程，但我要讲一下配置的思路，只要明白了配置的思路，JK 就是一个非常灵活的组件。</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">JK 的配置最关键的有三个文件，分别是</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;">httpd.conf&nbsp;</strong><br />Apache 服务器的配置文件，用来加载 JK 模块以及指定 JK 配置文件信息</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;">workers.properties</strong><br />到 Tomcat 服务器的连接定义文件</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;">uriworkermap.properties</strong><br />URI 映射文件，用来指定哪些 URL 由 Tomcat 处理，你也可以直接在 httpd.conf 中配置这些 URI，但是独立这些配置的好处是 JK 模块会定期更新该文件的内容，使得我们修改配置的时候无需重新启动 Apache 服务器。</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">其中第二、三个配置文件名都可以自定义。下面是一个典型的 httpd.conf 对 JK 的配置</p><h5><div style="margin: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;"><pre style="margin-top: 0px; border: 1px solid #cccccc; outline: 0px; font-size: 11px; vertical-align: baseline; width: 780px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; overflow: auto; clear: right; margin-bottom: 6px !important; padding: 5px 10px 5px 3px !important; background: #f7f7f7 !important;"># (httpd.conf) # 加载 mod_jk 模块 LoadModule jk_module modules/mod_jk.so  # # Configure mod_jk #  JkWorkersFile conf/workers.properties JkMountFile conf/uriworkermap.properties JkLogFile logs/mod_jk.log JkLogLevel warn</pre></div><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; line-height: 1.5em; font-size: 1.166em !important;">接下来我们在 Apache 的 conf 目录下新建两个文件分别是 workers.properties、uriworkermap.properties。这两个文件的内容大概如下</p></h5><h5><div style="margin: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;"><pre style="margin-top: 0px; border: 1px solid #cccccc; outline: 0px; font-size: 11px; vertical-align: baseline; width: 780px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; overflow: auto; clear: right; margin-bottom: 6px !important; padding: 5px 10px 5px 3px !important; background: #f7f7f7 !important;"># # workers.properties #   # list the workers by name  worker.list=DLOG4J, status  # localhost server 1 # ------------------------ worker.s1.port=8109 worker.s1.host=localhost worker.s1.type=ajp13  # localhost server 2 # ------------------------ worker.s2.port=8209 worker.s2.host=localhost worker.s2.type=ajp13 worker.s2.stopped=1  worker.DLOG4J.type=lb worker.retries=3 worker.DLOG4J.balanced_workers=s1, s2 worker.DLOG4J.sticky_session=1  worker.status.type=status</pre></div><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; line-height: 1.5em; font-size: 1.166em !important;">以上的 workers.properties 配置就是我们前面那个屏幕抓图的页面所用的配置。首先我们配置了两个类型为 ajp13 的 worker 分别是 s1 和 s2，它们指向同一台服务器上运行在两个不同端口 8109 和 8209 的 Tomcat 上。接下来我们配置了一个类型为 lb（也就是负载均衡的意思）的 worker，它的名字是 DLOG4J，这是一个逻辑的 worker，它用来管理前面配置的两个物理连接 s1 和 s2。最后还配置了一个类型为 status 的 worker，这是用来监控 JK 本身的模块。有了这三个 worker 还不够，我们还需要告诉 JK，哪些 worker 是可用的，所以就有&nbsp;<strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;">worker.list = DLOG4J, status</strong>&nbsp;这行配置。</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; line-height: 1.5em; font-size: 1.166em !important;">接下来便是 URI 的映射配置了，我们需要指定哪些链接是由 Tomcat 处理的，哪些是由 Apache 直接处理的，看看下面这个文件你就能明白其中配置的意义</p></h5><h5><div style="margin: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;"><pre style="margin-top: 0px; border: 1px solid #cccccc; outline: 0px; font-size: 11px; vertical-align: baseline; width: 780px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; overflow: auto; clear: right; margin-bottom: 6px !important; padding: 5px 10px 5px 3px !important; background: #f7f7f7 !important;">/*=DLOG4J /jkstatus=status  !/*.gif=DLOG4J !/*.jpg=DLOG4J !/*.png=DLOG4J !/*.css=DLOG4J !/*.js=DLOG4J !/*.htm=DLOG4J !/*.html=DLOG4J</pre></div><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; line-height: 1.5em; font-size: 1.166em !important;">相信你已经明白了一大半了：所有的请求都由 DLOG4J 这个 worker 进行处理，但是有几个例外，/jkstatus 请求由 status 这个 worker 处理。另外这个配置中每一行数据前面的感叹号是什么意思呢？感叹号表示接下来的 URI 不要由 JK 进行处理，也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件。</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; line-height: 1.5em; font-size: 1.166em !important;">通过对 workers.properties 和 uriworkermap.properties 的配置，可以有各种各样的组合来满足我们前面提出对一个 web 网站的要求。您不妨动手试试！</p><div style="margin: 10px 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline; height: 1px; clear: both; background-color: #cccccc;"></div><p ibm-back-to-top"="" style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; clear: both; text-align: right; height: 26px; line-height: 1.5em; font-size: 1.166em !important;"><a href="http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/#ibm-pcon" style="margin: 0px; padding: 0px 0px 0px 16px; border-width: 0px; border-bottom-style: none; outline: 0px; font-size: inherit; vertical-align: baseline; opacity: 0.8; display: inline; text-decoration: none; line-height: 1.065em; color: #000000 !important; background-image: url(http://1.www.s81c.com/i/v17/icons/ibm_sprite_arrow_blue_ON.png) !important; background-position: 0px -401px; background-repeat: no-repeat;">回页首</a></p></h5><h2>http_proxy</h2><p style="margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">这是利用 Apache 自带的 mod_proxy 模块使用代理技术来连接 Tomcat。在配置之前请确保是否使用的是 2.2.x 版本的 Apache 服务器。因为 2.2.x 版本对这个模块进行了重写，大大的增强了其功能和稳定性。</p><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">http_proxy 模式是基于 HTTP 协议的代理，因此它要求 Tomcat 必须提供 HTTP 服务，也就是说必须启用 Tomcat 的 HTTP Connector。一个最简单的配置如下</p><h5><div style="margin: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;"><pre style="margin-top: 0px; border: 1px solid #cccccc; outline: 0px; font-size: 11px; vertical-align: baseline; width: 780px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; overflow: auto; clear: right; margin-bottom: 6px !important; padding: 5px 10px 5px 3px !important; background: #f7f7f7 !important;">ProxyPass /images ! ProxyPass /css ! ProxyPass /js ! ProxyPass / http://localhost:8080/</pre></div><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; line-height: 1.5em; font-size: 1.166em !important;">在这个配置中，我们把所有 http://localhost 的请求代理到 http://localhost:8080/ ，这也就是 Tomcat 的访问地址，除了 images、css、js 几个目录除外。我们同样可以利用 mod_proxy 来做负载均衡，再看看下面这个配置</p></h5><h5><div style="margin: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;"><pre style="margin-top: 0px; border: 1px solid #cccccc; outline: 0px; font-size: 11px; vertical-align: baseline; width: 780px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; overflow: auto; clear: right; margin-bottom: 6px !important; padding: 5px 10px 5px 3px !important; background: #f7f7f7 !important;">ProxyPass /images ! ProxyPass /css !  ProxyPass /js !  ProxyPass / balancer://example/ &lt;Proxy balancer://example/&gt; BalancerMember http://server1:8080/ BalancerMember http://server2:8080/ BalancerMember http://server3:8080/ &lt;/Proxy&gt;</pre></div><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; line-height: 1.5em; font-size: 1.166em !important;">配置比 JK 简单多了，而且它也可以通过一个页面来监控集群运行的状态，并做一些简单的维护设置。</p></h5><h5>图 2：监控集群运行状态</h5><img alt="图 2：监控集群运行状态" border="0" src="http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/images/image004.gif" width="553" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 12.8000001907349px; vertical-align: baseline; font-family: Arial, sans-serif; line-height: 15.3600006103516px; background-color: #ffffff;" /><div style="margin: 10px 0px; border: 0px; outline: 0px; font-size: 12.8000001907349px; vertical-align: baseline; font-family: Arial, sans-serif; height: 1px; clear: both; line-height: 15.3600006103516px; background-color: #cccccc;"></div><p ibm-back-to-top"="" style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; clear: both; text-align: right; height: 22px; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;"><a href="http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/#ibm-pcon" style="margin: 0px; padding: 0px 0px 0px 16px; border-width: 0px; border-bottom-style: none; outline: 0px; font-size: inherit; vertical-align: baseline; color: #745285; opacity: 0.8; display: inline; text-decoration: none; line-height: 1.065em; font-weight: bold; background-image: url(http://1.www.s81c.com/i/v17/icons/ibm_sprite_arrow_blue_ON.png) !important; background-position: 0px -401px; background-repeat: no-repeat;">回页首</a></p><h2>ajp_proxy</h2><p style="margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">ajp_proxy 连接方式其实跟 http_proxy 方式一样，都是由 mod_proxy 所提供的功能。配置也是一样，只需要把 http:// 换成 ajp:// ，同时连接的是 Tomcat 的 AJP Connector 所在的端口。上面例子的配置可以改为：</p><h5><div style="margin: 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline;"><pre style="margin-top: 0px; border: 1px solid #cccccc; outline: 0px; font-size: 11px; vertical-align: baseline; width: 780px; font-family: 'Andale Mono', 'Lucida Console', Monaco, Liberation, fixed, monospace; overflow: auto; clear: right; margin-bottom: 6px !important; padding: 5px 10px 5px 3px !important; background: #f7f7f7 !important;">ProxyPass /images ! ProxyPass /css !  ProxyPass /js !  ProxyPass / balancer://example/ &lt;Proxy balancer://example/&gt; BalancerMember ajp://server1:8080/ BalancerMember ajp://server2:8080/ BalancerMember ajp://server3:8080/ &lt;/Proxy&gt;</pre></div><p style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; line-height: 1.5em; font-size: 1.166em !important;">采用 proxy 的连接方式，需要在 Apache 上加载所需的模块，mod_proxy 相关的模块有 mod_proxy.so、mod_proxy_connect.so、mod_proxy_http.so、mod_proxy_ftp.so、mod_proxy_ajp.so， 其中 mod_proxy_ajp.so 只在 Apache 2.2.x 中才有。如果是采用 http_proxy 方式则需要加载 mod_proxy.so 和 mod_proxy_http.so；如果是 ajp_proxy 则需要加载 mod_proxy.so 和 mod_proxy_ajp.so这两个模块。</p><div style="margin: 10px 0px; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline; height: 1px; clear: both; background-color: #cccccc;"></div><p ibm-back-to-top"="" style="margin: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; color: #222222; clear: both; text-align: right; height: 26px; line-height: 1.5em; font-size: 1.166em !important;"><a href="http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/#ibm-pcon" style="margin: 0px; padding: 0px 0px 0px 16px; border-width: 0px; border-bottom-style: none; outline: 0px; font-size: inherit; vertical-align: baseline; opacity: 0.8; display: inline; text-decoration: none; line-height: 1.065em; color: #000000 !important; background-image: url(http://1.www.s81c.com/i/v17/icons/ibm_sprite_arrow_blue_ON.png) !important; background-position: 0px -401px; background-repeat: no-repeat;">回页首</a></p></h5><h2>三者比较</h2><p style="margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px; border: 0px; outline: 0px; vertical-align: baseline; font-family: Arial, sans-serif; color: #222222; line-height: 1.5em; font-size: 1.166em !important; background-color: #ffffff;">相对于 JK 的连接方式，后两种在配置上是比较简单的，灵活性方面也一点都不逊色。但就稳定性而言就不像 JK 这样久经考验，毕竟 Apache 2.2.3 推出的时间并不长，采用这种连接方式的网站还不多，因此，如果是应用于关键的互联网网站，还是建议采用 JK 的连接方式。</p><img src ="http://www.blogjava.net/jjshcc/aggbug/423637.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2015-03-19 17:35 <a href="http://www.blogjava.net/jjshcc/archive/2015/03/19/423637.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IHS配置多域名的SSL证书</title><link>http://www.blogjava.net/jjshcc/archive/2014/05/13/413591.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Tue, 13 May 2014 04:47:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2014/05/13/413591.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/413591.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2014/05/13/413591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/413591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/413591.html</trackback:ping><description><![CDATA[<div style="display: inline-block; "><div><span class="Apple-style-span" style="font-family: Georgia, 'Bitstream Charter', serif; line-height: 24px; font-size: 16px; color: #333333; "><h1 class="entry-title" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; clear: both; font-weight: bold; font-family: 'Helvetica Neue', Arial, Helvetica, 'Nimbus Sans L', sans-serif; color: #000000; line-height: 1.3em; font-size: 21px; background-position: initial initial; background-repeat: initial initial; "></h1></span></div></div><div><div>SSL v2的设计顺应经典的公钥基础设施PKI(public key infrastructure)设计，后者认为一个服务器只提供一个服务从而也就只使用一个证书。这意味着服务器可以在TLS启动的早期阶段发送或提交证书，因为它知道它在为哪个域服务。HTTP服务器开启虚拟主机支持后，每个服务器通过相同的地址可以为很多域提供服务。服务器检查每一个请求来决定它在为哪个域服务。这个信息通常从HTTP请求头获得。不幸的是，当设置了TLS加密，服务器在读取HTTP请求里面的域名之前已经向客户端提交了证书，也就是已经为默认域提供了服务。因此，这种为虚拟主机提供安全的简单途径经常导致使用了错误的数字证书，从而导致浏览器对用户发出警告。</div><div>以上描述摘自OpenWares。详细了解请到：服务器名字指示SNI(Server Name Indication)</div><div>即访问www.buyberry.net会读取到beta.buyberry.net的证书，这样浏览器会报证书错误。</div><div>因此需要Server Name Indication (RFC 4366)这个扩展协议来修正。标准apache是支持Name Based SSL VHosts With SNI 。前提需要 OpenSSL 0.9.8f 之后才能支持。但是IHS并不支持这个扩展协议。</div><div></div><div>只能使用基于端口或者基于IP的虚拟主机来workaround</div><div></div><div>LoadModule ibm_ssl_module modules/mod_ibm_ssl.so</div><div>Listen 443</div><div>Listen 444</div><div>NameVirtualHost www.buyberry.net:443</div><div></div><div>ServerName www.buyberry.net</div><div>SSLCipherSpec 34</div><div>SSLCipherSpec 35</div><div>SSLCipherSpec 3A</div><div>SSLCipherSpec 33</div><div>SSLCipherSpec 36</div><div>SSLCipherSpec 39</div><div>SSLCipherSpec 32</div><div>SSLCipherSpec 31</div><div>SSLCipherSpec 30</div><div>DocumentRoot &#8220;/ihs/htdocs&#8221;</div><div>SSLEnable</div><div>SSLClientAuth none</div><div>Keyfile &#8220;/ihs/sslkey20121227/key.kdb&#8221;</div><div>ErrorLog logs/ssl1_error_log</div><div>CustomLog logs/ssl1_access_log common env=!image<br />#########################################</div><div></div><div>NameVirtualHost beta.buyberry.net:444</div><div></div><div>ServerName beta.buyberry.net</div><div>SSLCipherSpec 34</div><div>SSLCipherSpec 35</div><div>SSLCipherSpec 3A</div><div>SSLCipherSpec 33</div><div>SSLCipherSpec 36</div><div>SSLCipherSpec 39</div><div>SSLCipherSpec 32</div><div>SSLCipherSpec 31</div><div>SSLCipherSpec 30</div><div>DocumentRoot &#8220;/ihs/htdocs&#8221;</div><div>SSLEnable</div><div>SSLClientAuth none</div><div>Keyfile &#8220;/ihs/2012key/2012key.kdb&#8221;</div><div>ErrorLog logs/ssl2_error_log</div><div>CustomLog logs/ssl2_access_log common env=!image</div></div><img src ="http://www.blogjava.net/jjshcc/aggbug/413591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2014-05-13 12:47 <a href="http://www.blogjava.net/jjshcc/archive/2014/05/13/413591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Socket HTTP 请求</title><link>http://www.blogjava.net/jjshcc/archive/2013/11/29/406980.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Fri, 29 Nov 2013 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2013/11/29/406980.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/406980.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2013/11/29/406980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/406980.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/406980.html</trackback:ping><description><![CDATA[<div><div>package com.test.socket;</div><div></div><div>import java.io.*;</div><div>import java.net.*;</div><div>&nbsp;</div><div>public class HTTPSocket</div><div>&nbsp;&nbsp;{</div><div>&nbsp;&nbsp; &nbsp; &nbsp;public static void main(String[ ] args) throws UnknownHostException, IOException</div><div>&nbsp;&nbsp; &nbsp; {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String host = "127.0.0.1";</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int port = 8080;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Socket socket = new Socket(host, port);</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringBuffer sb = new StringBuffer();</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//请求的连接地址</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sb.append("GET /PortalGuard/Index.jsp HTTP/1.1\r\n")</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="white-space:pre">	</span>.append("Host:"+ host + "\r\n")</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.append("Content-Type:application/x-www-form-urlencoded\r\n")</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.append("Content-Length:11\r\n") &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//11 这个数值是看底下内容的长度的 即多少个字符</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.append("\r\n")</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.append("id=01234567\r\n"); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//内容</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;out.write(sb.toString());</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;out.flush();</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//打印响应</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String line = "";</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while((line = in.readLine()) != null)</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(line);</div><div>&nbsp;&nbsp; &nbsp; &nbsp;}</div><div>&nbsp;&nbsp;}</div></div><img src ="http://www.blogjava.net/jjshcc/aggbug/406980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2013-11-29 10:13 <a href="http://www.blogjava.net/jjshcc/archive/2013/11/29/406980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单实现HTTP服务器来理解GET和POST区别</title><link>http://www.blogjava.net/jjshcc/archive/2013/11/29/406976.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Fri, 29 Nov 2013 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2013/11/29/406976.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/406976.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2013/11/29/406976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/406976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/406976.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ET请求和POST请求有什么区别？GET请求的参数在URL的问号后面显示，而POST参数不在URL上；POST可以比GET请求更大的数据&#8230;一般的回答都是这样。但是作为一个高端大气上档次的程序员，这样回答就弱爆了。为了搞清楚GET和POST的区别，下面写了一个Java程序来接收HTTP请求。HTTP是基于TCP协议的，所以可以使用Java最底层的Socket实现。下面的程序仅仅不到10行...&nbsp;&nbsp;<a href='http://www.blogjava.net/jjshcc/archive/2013/11/29/406976.html'>阅读全文</a><img src ="http://www.blogjava.net/jjshcc/aggbug/406976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2013-11-29 09:46 <a href="http://www.blogjava.net/jjshcc/archive/2013/11/29/406976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TOMCAT-SSL双向认证-配置实例</title><link>http://www.blogjava.net/jjshcc/archive/2013/11/28/406960.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Thu, 28 Nov 2013 09:23:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2013/11/28/406960.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/406960.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2013/11/28/406960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/406960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/406960.html</trackback:ping><description><![CDATA[<div><span style="font-family: Arial; line-height: 26px; font-size: 16px; color: #333333; "><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; ">SSL (Secure Socket Layer -&nbsp;</span><span style="font-family: 宋体; ">安全套接字层</span><span style="font-family: 'Times New Roman'; ">)</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 宋体; ">功能：保障在</span><span style="font-family: 'Times New Roman'; ">Internet</span><span style="font-family: 宋体; ">上数据传输之安全，利用数据加密</span><span style="font-family: 'Times New Roman'; ">(Encryption)</span><span style="font-family: 宋体; ">技术，确保数据在网络上之传输过程中不会被截取及窃听，防止篡改。</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 宋体; ">如何让我们的</span><span style="font-family: 'Times New Roman'; ">WEB</span><span style="font-family: 宋体; ">应用程序应用</span><span style="font-family: 'Times New Roman'; ">SSL</span><span style="font-family: 宋体; ">安全保障？经过几天摸索，终于实现</span><span style="font-family: 'Times New Roman'; ">&nbsp;TOMCAT+SSL&nbsp;</span><span style="font-family: 宋体; ">双向认证，也就是说，首先，客户端将要认证服务器的安全性，确保访问的是正确的服务器，而非假冒的钓鱼网站；其次，服务器也要认证客户端的安全性，只有那些拥有服务器授权证书的客户端才可以访问。</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 宋体; ">下面请遵循详细步骤</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt; text-indent: -18pt; "><span><span style="font-family: 'Times New Roman'; ">1.<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">在</span><span style="font-family: 'Times New Roman'; ">D</span><span style="font-family: 宋体; ">盘建立目录：</span><span style="font-family: 'Times New Roman'; ">mykeys</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt; text-indent: -18pt; "><span><span style="font-family: 'Times New Roman'; ">2.<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">启动命令行，并转移到</span><span style="font-family: 'Times New Roman'; ">&nbsp;d:/mykeys</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">a)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">创建服务器密钥，其密钥库为</span><span style="font-family: 'Times New Roman'; ">&nbsp;d:/mykeys/server.ks</span><span style="font-family: 宋体; ">，注意</span><span style="font-family: 'Times New Roman'; ">keypass</span><span style="font-family: 宋体; ">和</span><span style="font-family: 'Times New Roman'; ">storepass</span><span style="font-family: 宋体; ">保持一致，它们分别代表</span>&nbsp;<span style="font-family: 宋体; ">密钥密码和密钥库密码，注意</span><span style="font-family: 'Times New Roman'; ">&nbsp;CN=localhost&nbsp;</span><span style="font-family: 宋体; ">中，</span><span style="font-family: 'Times New Roman'; ">localhost</span><span style="font-family: 宋体; ">表示要配置</span><span style="font-family: 'Times New Roman'; ">SSL</span><span style="font-family: 宋体; ">的主机名，不能任意指定</span><br /><span style="font-family: 'Times New Roman'; ">D:/mykeys&gt;keytool -genkey -v -alias serverKey -dname "<span style="color: red; ">CN=localhost" -keyalg RSA -keypass&nbsp;<span style="color: red; ">rwm258</span>-keystore server.ks -storepass&nbsp;<span style="color: red; ">rwm258</span></span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">b)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">创建客户端密钥，其密钥库为</span><span style="font-family: 'Times New Roman'; ">&nbsp;d:/mykeys/client.<span style="color: red; ">p12</span></span><span style="font-family: 宋体; ">，注意这个密钥库的后缀名，注意密钥库类型</span><span style="font-family: 'Times New Roman'; ">PKCS12<br />D:/mykeys&gt;keytool -genkey -v -alias clientKey -dname "CN=SomeOne" -keyalg RSA -keypass lyl147 -keystore client.p12 -storepass lyl147 -storetype&nbsp;<span style="color: red; ">PKCS12</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">c)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">将客户端密钥导出为证书文件</span><br /><span style="font-family: 'Times New Roman'; ">D:/mykeys&gt;keytool -export -alias clientKey -file clientKey.cer -keystore client.p12 -storepass lyl147 -storetype PKCS12</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">d)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">将上述客户端密钥文件导入服务器证书库，并设置为信任证书；注意会问你是否信任该证书，回答</span><span style="font-family: 'Times New Roman'; ">&nbsp;y&nbsp;</span><span style="font-family: 宋体; ">即可</span><br /><span style="font-family: 'Times New Roman'; ">D:/mykeys&gt;keytool -import -v -alias clientKey -file clientKey.cer -keystore server.ks -storepass rwm258</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt; text-indent: -18pt; "><span><span style="font-family: 'Times New Roman'; ">3.<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">为了在本机浏览器中进行</span><span style="font-family: 'Times New Roman'; ">SSL</span><span style="font-family: 宋体; ">访问，请：双击</span><span style="font-family: 'Times New Roman'; ">&nbsp;d:/mykeys/client.p12&nbsp;</span><span style="font-family: 宋体; ">，将启动证书向导</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">a)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">第</span><span style="font-family: 'Times New Roman'; ">2</span><span style="font-family: 宋体; ">步：要导入的文件</span>&nbsp;<span style="font-family: 宋体; ">文件名</span><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;D:/mykeys/client.p12</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">b)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">第</span><span style="font-family: 'Times New Roman'; ">3</span><span style="font-family: 宋体; ">步：为私钥键入密码</span><span style="font-family: 'Times New Roman'; ">lyl147&nbsp;</span><span style="font-family: 宋体; ">，勾选：标志此密钥为可导出的</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">c)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">第</span><span style="font-family: 'Times New Roman'; ">4</span><span style="font-family: 宋体; ">步：证书存储，选：将所有的证书放入下列存储区，然后，浏览</span><span style="font-family: 'Times New Roman'; ">-</span><span style="font-family: 宋体; ">个人</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">d)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">现在，打开</span><span style="font-family: 'Times New Roman'; ">IE</span><span style="font-family: 宋体; ">，查看证书：工具</span><span style="font-family: 'Times New Roman'; ">-Internet</span><span style="font-family: 宋体; ">选项</span><span style="font-family: 'Times New Roman'; ">-</span><span style="font-family: 宋体; ">内容</span><span style="font-family: 'Times New Roman'; ">-</span><span style="font-family: 宋体; ">证书</span><span style="font-family: 'Times New Roman'; ">-</span><span style="font-family: 宋体; ">个人，可以看到</span><span style="font-family: 'Times New Roman'; ">&nbsp;SomeOne&nbsp;</span><span style="font-family: 宋体; ">证书已被安装</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt; text-indent: -18pt; "><span><span style="font-family: 'Times New Roman'; ">4.<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">配置</span><span style="font-family: 'Times New Roman'; ">TOMCAT</span><span style="font-family: 宋体; ">服务器，以支持</span><span style="font-family: 'Times New Roman'; ">SSL</span><span style="font-family: 宋体; ">认证，编辑文件：</span><span style="font-family: 'Times New Roman'; ">%tomcat_home%/conf/server.xml</span><span style="font-family: 宋体; ">，下面这段配置代码本来是被屏蔽的，现在请取消其屏蔽，并相应增加密钥库的配置，其中</span><span style="font-family: 'Times New Roman'; ">clientAuth="true"</span><span style="font-family: 宋体; ">用以启动双向认证，否则，只有客户端认证服务器</span><span style="font-family: 'Times New Roman'; ">-</span><span style="font-family: 宋体; ">单向</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 21pt; text-indent: 21pt; "><span style="font-family: 'Times New Roman'; ">&lt;Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 63pt; "><span style="font-family: 'Times New Roman'; ">maxThreads="150" scheme="https" secure="true"</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 63pt; "><span style="font-family: 'Times New Roman'; ">clientAuth="<span style="color: red; ">true" sslProtocol="TLS"</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 63pt; "><span style="color: red; "><span style="font-family: 'Times New Roman'; ">keystoreFile="D:/mykeys/server.ks" keystorePass="rwm258"</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 63pt; "><span style="font-family: 'Times New Roman'; "><span style="color: red; ">truststoreFile="D:/mykeys/server.ks " truststorePass=" rwm258"&nbsp;</span>/&gt;</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt; text-indent: -18pt; "><span><span style="font-family: 'Times New Roman'; ">5.<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">启动</span><span style="font-family: 'Times New Roman'; ">&nbsp;TOMCAT</span><span style="font-family: 宋体; ">，然后在</span><span style="font-family: 'Times New Roman'; ">IE</span><span style="font-family: 宋体; ">浏览器中访问：</span><a href="https://localhost:8443/" target="_blank" style="color: #336699; text-decoration: none; "><span style="font-family: 'Times New Roman'; ">https://localhost:8443/</span></a></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">a)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">将弹出一个消息框，这是要客户端认证服务器，查看证书可看到服务器证书为</span><span style="font-family: 'Times New Roman'; ">&nbsp;localhost&nbsp;</span><span style="font-family: 宋体; ">，回顾前面的步骤，正是我们创建的那个服务器证书；这里点</span>&nbsp;<span style="font-family: 宋体; ">是</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">b)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">页面出现，说明客户端被允许访问</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt; text-indent: -18pt; "><span><span style="font-family: 'Times New Roman'; ">6.<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">现在，再次打开</span><span style="font-family: 'Times New Roman'; ">IE</span><span style="font-family: 宋体; ">，工具</span><span style="font-family: 'Times New Roman'; ">-Internet</span><span style="font-family: 宋体; ">选项</span><span style="font-family: 'Times New Roman'; ">-</span><span style="font-family: 宋体; ">内容</span><span style="font-family: 'Times New Roman'; ">-</span><span style="font-family: 宋体; ">证书</span><span style="font-family: 'Times New Roman'; ">-</span><span style="font-family: 宋体; ">个人</span>&nbsp;<span style="font-family: 宋体; ">，删除那个</span><span style="font-family: 'Times New Roman'; ">&nbsp;SomeOne&nbsp;</span><span style="font-family: 宋体; ">证书</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 42pt; text-indent: -21pt; "><span><span style="font-family: 'Times New Roman'; ">a)<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">现在，再次在</span><span style="font-family: 'Times New Roman'; ">IE</span><span style="font-family: 宋体; ">浏览器中访问：</span><a href="https://localhost:8443/" target="_blank" style="color: #336699; text-decoration: none; "><span style="font-family: 'Times New Roman'; ">https://localhost:8443/</span></a>&nbsp;<span style="font-family: 宋体; ">你会发现，回顾前面的</span><span style="font-family: 'Times New Roman'; ">&nbsp;3&nbsp;</span><span style="font-family: 宋体; ">步骤，你会明白为什么要将客户端证书导入</span><span style="font-family: 'Times New Roman'; ">&nbsp;IE&nbsp;</span><span style="font-family: 宋体; ">浏览器；</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 18pt; text-indent: -18pt; "><span><span style="font-family: 'Times New Roman'; ">7.<span style="font: normal normal normal 7pt/normal 'Times New Roman'; "><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; ">请再次重复</span><span style="font-family: 'Times New Roman'; ">&nbsp;3&nbsp;</span><span style="font-family: 宋体; ">步骤，之后再尝试访问</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 21pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; ">OK</span><span style="font-family: 宋体; ">，至此，我们在本机上</span><span style="font-family: 'Times New Roman'; ">SSL</span><span style="font-family: 宋体; ">双向配置已经成功，那么，换另一台电脑来访问本机服务器如何处理呢？很简单，把</span><span style="font-family: 'Times New Roman'; ">&nbsp;d:/mykeys/client.p12&nbsp;</span><span style="font-family: 宋体; ">复制到该机器，然后执行</span><span style="font-family: 'Times New Roman'; ">&nbsp;3&nbsp;</span><span style="font-family: 宋体; ">步骤，将这个证书导入到该机器的</span><span style="font-family: 'Times New Roman'; ">&nbsp;IE</span><span style="font-family: 宋体; ">浏览器个人证书中，记得密码是：</span><span style="font-family: 'Times New Roman'; ">lyl147</span><span style="font-family: 宋体; ">；当然，在那台电脑上访问时，要将</span><span style="font-family: 'Times New Roman'; ">localhost</span><span style="font-family: 宋体; ">修改为本机主机名或</span><span style="font-family: 'Times New Roman'; ">IP</span><span style="font-family: 宋体; ">地址</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; ">-------------------------------------------------------------------</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 宋体; ">要使你自己的</span><span style="font-family: 'Times New Roman'; ">WEB</span><span style="font-family: 宋体; ">程序应用</span><span style="font-family: 'Times New Roman'; ">SSL</span><span style="font-family: 宋体; ">安全访问，请遵循如下配置</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 宋体; ">在你应用的</span><span style="font-family: 'Times New Roman'; ">&nbsp;web.xml&nbsp;</span><span style="font-family: 宋体; ">文件的</span><span style="font-family: 'Times New Roman'; ">&nbsp;&lt;web-app&gt;&lt;/web-app&gt;&nbsp;</span><span style="font-family: 宋体; ">中加入如下配置</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21pt; "><span style="font-family: 'Times New Roman'; ">&lt;login-config&gt;</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- Authorization setting for SSL --&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;auth-method&gt;CLIENT-CERT&lt;/auth-method&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;realm-name&gt;Client Cert Users-only Area&lt;/realm-name&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/login-config&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;security-constraint&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- Authorization setting for SSL --&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;web-resource-collection &gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;web-resource-name &gt;SSL&lt;/web-resource-name&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/web-resource-collection&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;user-data-constraint&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;transport-guarantee&gt;CONFIDENTIAL&lt;/transport-guarantee&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="font-family: 'Times New Roman'; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/user-data-constraint&gt;</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21.75pt; "><span style="font-family: 'Times New Roman'; ">&lt;/security-constraint&gt;</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21.75pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21.75pt; "><span style="font-family: 宋体; ">你会发现，即使使用</span><span style="font-family: 'Times New Roman'; ">&nbsp;http://....:8080&nbsp;</span><span style="font-family: 宋体; ">来访问你的应用程序，它也会重定向为</span><span style="font-family: 'Times New Roman'; ">&nbsp;https://....8443&nbsp;</span><span style="font-family: 宋体; ">访问，也就是说，你的应用已经强制使用</span><span style="font-family: 'Times New Roman'; ">SSL</span><span style="font-family: 宋体; ">安全访问层</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21.75pt; "><span style="font-family: 'Times New Roman'; ">OK</span><span style="font-family: 宋体; ">，现在，充分享受</span><span style="font-family: 'Times New Roman'; ">&nbsp;SSL&nbsp;</span><span style="font-family: 宋体; ">安全访问服务吧</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21.75pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-indent: 21.75pt; "><span style="font-family: 宋体; ">此外，你还可以在你的程序中验证客户证书，实现客户端证书登录，具体这里不谈了，下次给出完整程序</span></p></span></div><img src ="http://www.blogjava.net/jjshcc/aggbug/406960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2013-11-28 17:23 <a href="http://www.blogjava.net/jjshcc/archive/2013/11/28/406960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat自动部署</title><link>http://www.blogjava.net/jjshcc/archive/2010/06/16/323660.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Wed, 16 Jun 2010 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2010/06/16/323660.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/323660.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2010/06/16/323660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/323660.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/323660.html</trackback:ping><description><![CDATA[<p>对Tomcat部署web应用的方式总结，常见的有以下四种： <br />
&nbsp;</p>
<p>1，使用控制台部署</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 访问Http：//localhost:8080，并通过Tomcat Manager登录，进入部署界面即可。</p>
<p>2，利用Tomcat自动部署</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 将应用程序复制到Tomcat的 webapps路径下，Tomcat启动时将自动加载。</p>
<p>3，修改Server.xml文件部署</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 用UE或EditPlus打开Tomcat位于conf/server.xml的配置文件，找到以下内容：</p>
<p>Xml代码<br />
&lt;Host name="localhost" debug="0" appBase="webapps"&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unpackWARs="true" autoDeploy="true"&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlValidation="false" xmlNamespaceAware="false"&gt;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; .....&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&lt;/Host&gt;&nbsp;&nbsp; <br />
&nbsp;.....<br />
&nbsp;&nbsp; 在Host之间添加如下内容：</p>
<p>来源：(http://blog.sina.com.cn/s/blog_658fbfbb0100i3sa.html) - tomcat自动部署_eric_新浪博客<br />
Xml代码<br />
&lt;Context path="/Mywebapps" reloadable="true" docBase="d:\Mywebapps" workDir="d:\Mywebapps\emp"/&gt;&nbsp;&nbsp; </p>
<p>path：表示访问的路径；如上述例子中，访问该应用程序为：http://localhost:8080/Mywebapps</p>
<p>reloadable：表示可以在运行时在classes与lib文件夹下自动加载类包</p>
<p>docbase：表示应用程序的地址，注意斜杠的方向&#8220;\&#8221;</p>
<p>workdir：表示缓存文件的放置地址</p>
<p>&nbsp;</p>
<p>4，增加自定义web部署文件(推荐使用，不需要重启Tomcat)</p>
<p>&nbsp;&nbsp;&nbsp; 在Tomcat安装目录conf\Catalina\localhost下，里面有Tomcat自带的三个应用，随意复制其中的一个XML文件，然后修改 docbase指向你自己的应用程序，并把path改名，各参数参见上第三种方法。或者你也可以自己新建一个XML文件(注意此文件名将作为 Context中的path,不管文件里的path怎么设置也无效)，将以下内容复制过去，修改相应路径即可。</p>
<p>Xml代码<br />
&lt;Context path="/test" docBase="F:/J2EE/yazd_war_3_0"&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0" privileged="true" reloadable="true" &gt;&nbsp;&nbsp; <br />
&lt;/Context&gt;&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 部署完毕后，通过http://localhost:8080/你的path名 就可以访问。<br />
&nbsp;</p>
<img src ="http://www.blogjava.net/jjshcc/aggbug/323660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2010-06-16 14:43 <a href="http://www.blogjava.net/jjshcc/archive/2010/06/16/323660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat里 appBase和docBase的区别</title><link>http://www.blogjava.net/jjshcc/archive/2010/06/16/323659.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Wed, 16 Jun 2010 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/jjshcc/archive/2010/06/16/323659.html</guid><wfw:comment>http://www.blogjava.net/jjshcc/comments/323659.html</wfw:comment><comments>http://www.blogjava.net/jjshcc/archive/2010/06/16/323659.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/jjshcc/comments/commentRss/323659.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jjshcc/services/trackbacks/323659.html</trackback:ping><description><![CDATA[&lt;host appBase="d:/aaa"&gt;<br />&lt;Context path="/smswap" reloadable="true" docBase="D:\workspace\smswap\WebRoot"&gt;&lt;/Context&gt;<br />&lt;/host&gt;<br /><br />我们先看appBase,这个目录表示：<br />1 这个目录下面的子目录将自动被部署为应用。<br />2 这个目录下面的.war文件将被自动解压缩并部署为应用<br /><br />而docBase只是指向了你某个应用的目录，这个可以和appBase没有任何关系。<br /><br />总结：<br />如果你想自己指定路径，那么应该在docBase里面<br />如果你想简单，那么直接把他们复制到appBase下面就行了<br /><br />如果你把他们弄重复了，也就是2个指向了一个目录，看上去也能运行，但你的应用下面的每个子目录，其实是被部署为单独的应用的。<br />比如你的应用为<br /><br />myApp, 放在了<br />d:\project\myApp<br />里面有2个子目录<br />d:\project\myApp\images<br />d:\project\myApp\js<br /><br />你可以通过<br />1 设置 appBase 指向 d:\project 来让系统自动部署<br />2 你可以手工指定docBase到 d:\project\myApp<br />3 如果你指定了 appBase到 d:\project\myApp 那么<br />d:\project\myApp\images这个将不再是普通的子目录，而是一个单独的虚拟目录，或者叫应用了。因为其被自动部署<br />d:\project\myApp\js 也一样的后果<ins> </ins><img src ="http://www.blogjava.net/jjshcc/aggbug/323659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jjshcc/" target="_blank">Eric_jiang</a> 2010-06-16 14:41 <a href="http://www.blogjava.net/jjshcc/archive/2010/06/16/323659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>