﻿<?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-Noah-文章分类-Java</title><link>http://www.blogjava.net/Noah/category/37207.html</link><description>&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN"&gt;不是经典我不发&lt;/span&gt;</description><language>zh-cn</language><lastBuildDate>Mon, 19 Dec 2016 03:35:12 GMT</lastBuildDate><pubDate>Mon, 19 Dec 2016 03:35:12 GMT</pubDate><ttl>60</ttl><item><title>Puppet的server端与agent端的通信建立</title><link>http://www.blogjava.net/Noah/articles/432131.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Fri, 16 Dec 2016 09:09:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/432131.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/432131.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/432131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/432131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/432131.html</trackback:ping><description><![CDATA[puppet 的安装与配置，请看上一篇文章。<br />这里默认你已经把它安装好了。<br /><br />想让两台(或N台)机器相互通信，先要设置它们之间的Host文件。<br />每一台机器分别执行如下命令 
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">sudo&nbsp;vi&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">etc</span><span style="color: #000000">/</span><span style="color: #000000">hosts</span></div>把要相互通信的所有机器的IP 和 别名添加进来。比如先以server端为例 
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #800000">127.0</span><span style="color: #000000">.</span><span style="color: #800000">0.1</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;localhost&nbsp;localhost</span><span style="color: #000000">.</span><span style="color: #000000">localdomain&nbsp;localhost4&nbsp;localhost4</span><span style="color: #000000">.</span><span style="color: #000000">localdomain4<br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">::</span><span style="color: #800000">1</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localhost&nbsp;localhost</span><span style="color: #000000">.</span><span style="color: #000000">localdomain&nbsp;localhost6&nbsp;localhost6</span><span style="color: #000000">.</span><span style="color: #000000">localdomain6<br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">10.23</span><span style="color: #000000">.</span><span style="color: #800000">10.237</span><span style="color: #000000">&nbsp;puppet</span><span style="color: #000000">-</span><span style="color: #000000">server</span><span style="color: #000000">.</span><span style="color: #000000">noah</span><span style="color: #000000">.</span><span style="color: #000000">blogjava</span><span style="color: #000000">.</span><span style="color: #000000">net<br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">上面可能是打开这个文件里默认的，不用管，直接在下面加agent的ip就可以了,有多少加多少。</span><span style="color: #008000"><br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">10.52</span><span style="color: #000000">.</span><span style="color: #800000">27.71</span><span style="color: #000000">&nbsp;agent001</span><span style="color: #000000">.</span><span style="color: #000000">noah</span><span style="color: #000000">-</span><span style="color: #000000">test</span><span style="color: #000000">.</span><span style="color: #000000">net<br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">10.52</span><span style="color: #000000">.</span><span style="color: #800000">27.72</span><span style="color: #000000">&nbsp;agent002</span><span style="color: #000000">.</span><span style="color: #000000">noah</span><span style="color: #000000">-</span><span style="color: #000000">test</span><span style="color: #000000">.</span><span style="color: #000000">net<br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">10.52</span><span style="color: #000000">.</span><span style="color: #800000">27.73</span><span style="color: #000000">&nbsp;agent003</span><span style="color: #000000">.</span><span style="color: #000000">noah</span><span style="color: #000000">-</span><span style="color: #000000">test</span><span style="color: #000000">.</span><span style="color: #000000">net<br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>接下来把上面的都复制，然后，分别考到其它的机器里面。<br /><br />接下来回到agent端，配置puppet 的配置文件，执行如下命令<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />sudo <span style="color: #000000">vi&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">etc</span><span style="color: #000000">/</span><span style="color: #000000">puppetlabs</span><span style="color: #000000">/</span><span style="color: #000000">puppet</span><span style="color: #000000">/</span><span style="color: #000000">puppet</span><span style="color: #000000">.</span><span style="color: #000000">conf</span></div>在打开的文件里面填写如下信息<br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> 
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">[main]<br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">这个certname就是上面host里面的名字</span><span style="color: #008000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">certname&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;agent001</span><span style="color: #000000">.</span><span style="color: #000000">noah</span><span style="color: #000000">-</span><span style="color: #000000">test</span><span style="color: #000000">.</span><span style="color: #000000">net<br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">server&nbsp;就是puppet的server的地址</span><span style="color: #008000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">server&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;puppet</span><span style="color: #000000">-</span><span style="color: #000000">server</span><span style="color: #000000">.</span><span style="color: #000000">noah</span><span style="color: #000000">.</span><span style="color: #000000">blogjava</span><span style="color: #000000">.</span><span style="color: #000000">net<br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />environment&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;production<br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />runinterval&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;1h</span></div><br /><br />然后在agent端，执行如下命令，向server端申请证书<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">sudo&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">opt</span><span style="color: #000000">/</span><span style="color: #000000">puppetlabs</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">puppet&nbsp;agent&nbsp;</span><span style="color: #000000">--</span>test</div><span style="color: #33cccc">然后，会出现这样的信息</span><br /><span style="color: #33cccc">Info: Creating a new SSL key for agent01.noah-test</span><br /><span style="color: #33cccc">Info: Caching certificate for ca</span><br /><span style="color: #33cccc">Info: csr_attributes file loading from /etc/puppetlabs/pu</span><span style="color: #33cccc">ppet/csr_</span><span style="color: #33cccc">att</span>ributes.yaml<br />Exiting; no certificate found and waitforcert is disabled<br /><br />证明，申请成功，等待server端同意。这时可以转到server端，执行如下命令查看如些机器要申请证书 
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">sudo&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">opt</span><span style="color: #000000">/</span><span style="color: #000000">puppetlabs</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">puppet&nbsp;cert&nbsp;list&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">all</span></div>这里会显示出所有申请过的和正在等待审批的agent的certname 的名字。审批通过的前面有个&#8220;+&#8221;。<br />接下来执行如下命令进行单独审批<br />&nbsp; 
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">sudo&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">opt</span><span style="color: #000000">/</span><span style="color: #000000">puppetlabs</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">puppet&nbsp;cert&nbsp;sign&nbsp;agent001</span><span style="color: #000000">.</span><span style="color: #000000">noah</span><span style="color: #000000">-</span><span style="color: #000000">test</span><span style="color: #000000">.</span><span style="color: #000000">net<br /><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />也可以直接在sgin 后面加 "--all",进行全部审批。<br /><br />审批完成后，再回到agent端，执行同样的命令<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">sudo&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">opt</span><span style="color: #000000">/</span><span style="color: #000000">puppetlabs</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">puppet&nbsp;agent&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">test</span></div><br />如下显示的全是类似如下绿色的信息，证明它们之间的通信已经建立成功<br />
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #00b050">Info: Using configured environment 'production'</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #00b050">Info: Retrieving pluginfacts</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #00b050">Info: Retrieving plugin</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #00b050">Info: Caching catalog for agent001<span style="color: #33cccc">.</span><span style="color: #33cccc">noah</span><span style="color: #33cccc">-</span><span style="color: #33cccc">test</span><span style="color: #33cccc">.</span><span style="color: #33cccc">net</span></span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #00b050">Info: Applying configuration version '1481877703'</span></div><br /><br /><br /><br /><br /><br /><br />问题汇总：<br /> 
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">cloud@cdt-dev-cafews-yabinx:/etc/puppetlabs/puppet&gt; sudo puppet agent -t</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: Setting 'pluginsync' is deprecated.</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">(at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/defaults.rb:1713:in `block in &lt;module:Puppet&gt;')</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: Unable to fetch my node definition, but the agent run will continue:</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: getaddrinfo: Name or service not known</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Info: Retrieving pluginfacts</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/var/lib/puppet/facts.d]: Failed to generate additional resources using 'eval_generate': getaddrinfo: Name or service not known</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: getaddrinfo: Name or service not known</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Info: Retrieving plugin</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': getaddrinfo: Name or service not known</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: getaddrinfo: Name or service not known</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Info: Loading facts</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: Could not retrieve catalog from remote server: getaddrinfo: Name or service not known</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: Not using cache on failed catalog</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: Could not retrieve catalog; skipping run</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: Could not send report: getaddrinfo: Name or service not known</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="font-weight: bold">用的命令不对，改用这个</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph">sudo /opt/puppetlabs/bin/puppet agent --test</div><br /><br /><br /> 
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">sudo/opt/puppetlabs/bin/puppet agent --test</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: Unable to fetch my node definition, but the agent run will continue:</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: Server hostname 'cdt-dev-cafews-yabinx' did not match server certificate; expected one of cdt-dev-cafews-yabinx.emea1.cis.trcloud, DNS:puppet, DNS:cdt-dev-cafews-yabinx.emea1.cis.trcloud</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Info: Retrieving pluginfacts</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': Server hostname 'cdt-dev-cafews-yabinx' did not match server certificate; expected one of cdt-dev-cafews-yabinx.emea1.cis.trcloud, DNS:puppet, DNS:cdt-dev-cafews-yabinx.emea1.cis.trcloud</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/opt/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: Server hostname 'cdt-dev-cafews-yabinx' did not match server certificate; expected one of cdt-dev-cafews-yabinx.emea1.cis.trcloud, DNS:puppet, DNS:cdt-dev-cafews-yabinx.emea1.cis.trcloud</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Info: Retrieving plugin</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/opt/puppetlabs/puppet/cache/lib]: Failed to generate additional resources using 'eval_generate': Server hostname 'cdt-dev-cafews-yabinx' did not match server certificate; expected one of cdt-dev-cafews-yabinx.emea1.cis.trcloud, DNS:puppet, DNS:cdt-dev-cafews-yabinx.emea1.cis.trcloud</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/opt/puppetlabs/puppet/cache/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: Server hostname 'cdt-dev-cafews-yabinx' did not match server certificate; expected one of cdt-dev-cafews-yabinx.emea1.cis.trcloud, DNS:puppet, DNS:cdt-dev-cafews-yabinx.emea1.cis.trcloud</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: Could not retrieve catalog from remote server: Server hostname 'cdt-dev-cafews-yabinx' did not match server certificate; expected one of cdt-dev-cafews-yabinx.emea1.cis.trcloud, DNS:puppet, DNS:cdt-dev-cafews-yabinx.emea1.cis.trcloud</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: Not using cache on failed catalog</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: Could not retrieve catalog; skipping run</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: Could not send report: Server hostname 'cdt-dev-cafews-yabinx' did not match server certificate; expected one of cdt-dev-cafews-yabinx.emea1.cis.trcloud, DNS:puppet, DNS:cdt-dev-cafews-yabinx.emea1.cis.trcloud</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="font-weight: bold">其实它已经告诉你了，改一下/etc/hosts就可以了，改成下面的其中一个</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000"></span>expected one of cdt-dev-cafews-yabinx.emea1.cis.trcloud, DNS:puppet, DNS:cdt-dev-cafews-yabinx.emea1.cis.trcloud</div><br /><br /><br /><br /> 
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">sudo /opt/puppetlabs/bin/puppet agent --test</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: Unable to fetch my node definition, but the agent run will continue:</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local issuer certificate for /CN=cdt-dev-cafews-yabinx2.emea1.cis.trcloud]</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Info: Retrieving pluginfacts</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local issuer certificate for /CN=cdt-dev-cafews-yabinx2.emea1.cis.trcloud]</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/opt/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local issuer certificate for /CN=cdt-dev-cafews-yabinx2.emea1.cis.trcloud]</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Info: Retrieving plugin</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/opt/puppetlabs/puppet/cache/lib]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local issuer certificate for /CN=cdt-dev-cafews-yabinx2.emea1.cis.trcloud]</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: /File[/opt/puppetlabs/puppet/cache/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local issuer certificate for /CN=cdt-dev-cafews-yabinx2.emea1.cis.trcloud]</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local issuer certificate for /CN=cdt-dev-cafews-yabinx2.emea1.cis.trcloud]</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Warning: Not using cache on failed catalog</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: Could not retrieve catalog; skipping run</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Error: Could not send report: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local issuer certificate for /CN=cdt-dev-cafews-yabinx2.emea1.cis.trcloud]</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="font-weight: bold">一般这种情况就是由于某种原因没有认证没有成功，但它又不会重新认证了，所以就报这个错误，解决办法是到这个目录下/etc/puppetlabs/puppet，把生成的ssl文件夹给删除，让它重新生成一次key。如果生成一次还没有成功的话，你要看一下是不是其它地方的问题，然后，要重新重复上面的步骤，重新生成密钥。</span></div><br /><img src ="http://www.blogjava.net/Noah/aggbug/432131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2016-12-16 17:09 <a href="http://www.blogjava.net/Noah/articles/432131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Puppet的安装与配置</title><link>http://www.blogjava.net/Noah/articles/432127.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Thu, 15 Dec 2016 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/432127.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/432127.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/432127.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/432127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/432127.html</trackback:ping><description><![CDATA[在安装之前，先简单说一下Puppet的构成。Puppet分为两部分，一部分叫Puppet Server 也叫 Puppet Master， 新版本好像开始叫Server了。另一部分，叫Agent。为什么叫做一部分，而不叫一个，道理很简单，就是可以有多台。好了费话不多说正式开始<br />先确定一下自己的系统版本，可以通过执行下面的命令查看：<br />
<div>
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->cat&nbsp;/etc/redhat-release</div></div>如果是Enterprise Linux 7就执行这句<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->sudo&nbsp;rpm&nbsp;-Uvh&nbsp;https://yum.puppetlabs.com/puppetlabs-release-pc1-el-<span style="color: #800000">7</span>.noarch.rpm</div>Enterprise Linux 6<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->sudo&nbsp;rpm&nbsp;-Uvh&nbsp;https://yum.puppetlabs.com/puppetlabs-release-pc1-el-<span style="color: #800000">6</span>.noarch.rpm</div>Ubuntu 16.04 Xenial Xerus<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->wget&nbsp;https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb<br />sudo&nbsp;dpkg&nbsp;-i&nbsp;puppetlabs-release-pc1-xenial.deb<br />sudo&nbsp;apt&nbsp;update</div>
<div>Ubuntu 15.10 Wily Werewolf</div>
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->wget&nbsp;https://apt.puppetlabs.com/puppetlabs-release-pc1-wily.deb<br />sudo&nbsp;dpkg&nbsp;-i&nbsp;puppetlabs-release-pc1-wily.deb<br />sudo&nbsp;apt&nbsp;update</div>
<div>Ubuntu 14.04 Trusty Tahr</div>
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->wget&nbsp;https://apt.puppetlabs.com/puppetlabs-release-pc1-trusty.deb<br />sudo&nbsp;dpkg&nbsp;-i&nbsp;puppetlabs-release-pc1-trusty.deb<br />sudo&nbsp;apt-get&nbsp;update</div>
<div>Ubuntu 12.04 Precise Pangolin</div>
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->wget&nbsp;https://apt.puppetlabs.com/puppetlabs-release-pc1-precise.deb<br />sudo&nbsp;dpkg&nbsp;-i&nbsp;puppetlabs-release-pc1-precise.deb<br />sudo&nbsp;apt-get&nbsp;update</div>
<div>Debian 8 Jessie</div>
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->wget&nbsp;https://apt.puppetlabs.com/puppetlabs-release-pc1-jessie.deb<br />sudo&nbsp;dpkg&nbsp;-i&nbsp;puppetlabs-release-pc1-jessie.deb<br />sudo&nbsp;apt-get&nbsp;update</div>
<div>Debian 7 Wheezy</div>
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->wget&nbsp;https://apt.puppetlabs.com/puppetlabs-release-pc1-wheezy.deb<br />sudo&nbsp;dpkg&nbsp;-i&nbsp;puppetlabs-release-pc1-wheezy.deb<br />sudo&nbsp;apt-get&nbsp;update</div><br />如果遇到这个错误，应该是你的rpm没有设置代理，请看文章结尾错误汇总<br /><span style="color: #ff0000">curl: (7) couldn't connect to host</span><br /><br />接下来用YUM安装<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->sudo yum&nbsp;install&nbsp;puppetserver</div>或<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->apt-get&nbsp;install&nbsp;puppetserver</div><br />遇到这个错误是YUM没有设置代理，文章结尾问题汇总 
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">28, 'connect() timed out!'</span><br /><br />接下来就可以正常启动了<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->sudo service&nbsp;puppetserver&nbsp;start</div><br />可以通过如下命令查看是否启动成功<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->sudo service&nbsp;puppetserver&nbsp;status</div><br />默认它会分配2G内存，需要调整的话，可以在这里<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->/etc/sysconfig/puppetserver -- RedHeat<br />
<div>/etc/default/puppetserver &nbsp;-- Debian</div></div><br /><br />接下来在另外一台器上安装agent<br />用相同的方法先下载资源包，sudo rpm xxxx,等 。<br />然后，安装agent<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->sudo&nbsp;yum&nbsp;install&nbsp;puppet</div>通过如下命令启动agent<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->sudo&nbsp;service&nbsp;puppet start</div>通过如下命令查看是否启动成功<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->service&nbsp;puppet&nbsp;status</div><br /><br /><br /><br /></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">Retrieving https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">curl: (7) couldn't connect to host</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="color: #ff0000">error: skipping https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm - transfer failed</span></div>
<div style="font-size: 14px; white-space: pre-wrap; text-align: left; line-height: 1.875" yne-bulb-block="paragraph"><span style="font-weight: bold">sudo rpm -Uvh --httpproxy http://webproxy.lon.corp.services --httpport 80 </span><a href="https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm"><span style="text-decoration: underline; font-weight: bold; color: #0000ff">https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm</span></a></div><br /><br />在安装过程中，如果Yum不能下载的话，可能没有设置代理， 
<div>执行 sudo vi /etc/yum.conf 然后加上代理</div>
<div>proxy=http://xxxxxxxxxx:80<br /><br />
<div style="white-space: pre-wrap; line-height: 1.875" yne-bulb-block="paragraph">puppet 默认使用8140，查看产端口占用情况<br />
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; width: 98%; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->sudo&nbsp;netstat&nbsp;-nlatp&nbsp;|&nbsp;<span style="color: #0000ff">grep</span>&nbsp;<span style="color: #800000">8140</span></div><br /><br /><br /></div></div><img src ="http://www.blogjava.net/Noah/aggbug/432127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2016-12-15 17:04 <a href="http://www.blogjava.net/Noah/articles/432127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mockito的高级用法</title><link>http://www.blogjava.net/Noah/articles/431236.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Mon, 18 Jul 2016 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/431236.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/431236.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/431236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/431236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/431236.html</trackback:ping><description><![CDATA[之前写了一篇关于《<a href="http://www.blogjava.net/Noah/articles/404846.html" target="_blank">用Mockito绕过DAO层直接去测试Service层</a>》，不太全面，这次对之前的做了点补充<br />有的时候这个方法的返回值是通过参数返回的。比如类似于这样：<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;test(Map&nbsp;map){<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">do&nbsp;something</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;map.put("response","success");<br />
}</div>这个时候需要这样使用：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->when(&nbsp;myMock.someMethod(&nbsp;any(&nbsp;Map.<span style="color: #0000FF; ">class</span>&nbsp;)&nbsp;)&nbsp;).thenAnswer(&nbsp;(&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Answer&lt;Void&gt;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Void&nbsp;answer(&nbsp;InvocationOnMock&nbsp;invocation&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;Throwable&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;args&nbsp;=&nbsp;invocation.getArguments();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;arg1&nbsp;=&nbsp;(Map)args[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arg1.put("response",&nbsp;"failed");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;)&nbsp;);</div><br /><br />还有一种用法，返回参数值做为函数返回值<br /><div>mockito 1.9.5之后，提供一个方便的方法来实现这个需要，在这之前可以使用一个匿名函数来返回一个answer来实现。</div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->when(myMock.myFunction(anyString())).then(returnsFirstArg());</div></div><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12.8000001907349px; line-height: 19.2000007629395px; background-color: #ffffff;">其中returnsFirstArg()是org.mockito.AdditionalAnswers中的一个静态方法。</span><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12.8000001907349px; line-height: 19.2000007629395px; background-color: #ffffff;" /><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12.8000001907349px; line-height: 19.2000007629395px; background-color: #ffffff;">在这个类中还有其他的一些类似方法</span><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12.8000001907349px; line-height: 19.2000007629395px; background-color: #ffffff;" /><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12.8000001907349px; line-height: 19.2000007629395px; background-color: #ffffff;">returnsSecondArg()</span><br style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12.8000001907349px; line-height: 19.2000007629395px; background-color: #ffffff;" /><div style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12.8000001907349px; line-height: 19.2000007629395px; background-color: #ffffff;">returnsLastArg()</div><div style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12.8000001907349px; line-height: 19.2000007629395px; background-color: #ffffff;">ReturnsArgumentAt(int position)</div><div></div><img src ="http://www.blogjava.net/Noah/aggbug/431236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2016-07-18 17:18 <a href="http://www.blogjava.net/Noah/articles/431236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF学习日志</title><link>http://www.blogjava.net/Noah/articles/420611.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Wed, 26 Nov 2014 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/420611.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/420611.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/420611.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/420611.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/420611.html</trackback:ping><description><![CDATA[1.Bean中这样写，页面上直接调用<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->@Named("bean1")&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;or&nbsp;@ManagedBean(name="bean1")&nbsp;or&nbsp;不指定名字，默认Bean的名，sampleBean</span><span style="color: #008000; "><br />
</span>@SessionScoped<br />
<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;SampleBean&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;getLuckyNumber()&nbsp;{&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setLuckyNumber(<span style="color: #0000FF; ">int</span>&nbsp;value)&nbsp;{&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;login()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;()&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"success";&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"error";<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</div>
页面这样写，直接调相应的方法<br />
<span style="background-color: #eeeeee; font-size: 13px;">&lt;h:commandButton value="press me" action="#{bean1.login}"/&gt;</span><br />
2.超链接<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">h:link&nbsp;</span><span style="color: #FF0000; ">outcome</span><span style="color: #0000FF; ">="#{custVM.gotoDetail}"</span><span style="color: #FF0000; ">&nbsp;includeViewParams</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;target</span><span style="color: #0000FF; ">="_blank"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">f:param&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="scmNo"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="#{warr.project_no}"</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">f:param&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="custNo"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="#{warr.cust_no}"</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">f:param&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="custName"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="#{warr.cust_name}"</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; <span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">h:outputText&nbsp;</span><span style="color: #FF0000; ">value</span><span style="color: #0000FF; ">="#{warr.accrued_amt}"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">f:convertNumber&nbsp;</span><span style="color: #FF0000; ">currencySymbol</span><span style="color: #0000FF; ">="$"</span><span style="color: #FF0000; ">&nbsp;type</span><span style="color: #0000FF; ">="currency"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">h:outputText</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">h:link</span><span style="color: #0000ff;">&gt;</span></div>在目标页面写下面这个，这样就可以传过来了<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">f:metadata</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">f:viewParam&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="scmNo"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="#{custVM.scmNo}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">f:viewParam&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="custNo"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="#{custVM.custNo}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">f:viewParam&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="custName"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="#{custVM.custName}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">f:metadata</span><span style="color: #0000FF; ">&gt;</span></div>3.下拉菜单写法：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">private</span>&nbsp;List&lt;SelectItem&gt;&nbsp;monthItems;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">它有自己的SelectItem&nbsp;类，用来存键值对。</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;@PostConstruct<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;init()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;now&nbsp;=&nbsp;Calendar.getInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date&nbsp;=&nbsp;now.getTime();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;monthItems&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList&lt;SelectItem&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Date&gt;&nbsp;monthList&nbsp;=&nbsp;amoritizateService.getMonthList();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(Date&nbsp;month:monthList){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;monthItems.add(<span style="color: #0000FF; ">new</span>&nbsp;SelectItem(month,&nbsp;DateUtil.format(month,&nbsp;"yyyy&nbsp;-&nbsp;MM")));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error("ERROR!",e);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div>页面可以直接这样写：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">p:selectOneMenu&nbsp;</span><span style="color: #FF0000; ">value</span><span style="color: #0000FF; ">="#{amoritizateVM.date}"</span><span style="color: #FF0000; ">&nbsp;converter</span><span style="color: #0000FF; ">="monthItemConverter"</span><span style="color: #FF0000; ">&nbsp;style</span><span style="color: #0000FF; ">="width:145px"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">f:selectItems&nbsp;</span><span style="color: #FF0000; ">value</span><span style="color: #0000FF; ">="#{amoritizateVM.monthItems}"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">f:selectItems</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">p:selectOneMenu</span><span style="color: #0000FF; ">&gt;</span></div>这里面用到了另外一个知识点Converter,用来转换类别，比如这里是用来Date和String的互转，所以要写上这个类<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />只要实现它的接口，它会自动完成转换，还是很方便的<br /></span><span style="color: #008000; ">*/</span><br />@FacesConverter("monthItemConverter")<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;MonthItemConverter&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;Converter&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;Logger&nbsp;LOG&nbsp;=&nbsp;LoggerFactory.getLogger(MonthItemConverter.<span style="color: #0000FF; ">class</span>);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Object&nbsp;getAsObject(FacesContext&nbsp;arg0,&nbsp;UIComponent&nbsp;arg1,&nbsp;String&nbsp;arg2)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;DateUtil.parseDate(arg2);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;getAsString(FacesContext&nbsp;arg0,&nbsp;UIComponent&nbsp;arg1,&nbsp;Object&nbsp;arg2)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;DateUtil.format((Date)arg2);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div><br />4.表单提交的话，用这个<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">p:commandButton&nbsp;</span><span style="color: #FF0000; ">value</span><span style="color: #0000FF; ">="Query"</span><span style="color: #FF0000; ">&nbsp;update</span><span style="color: #0000FF; ">="dataForm"</span><span style="color: #0000FF; ">/&gt;</span></div>这里面的update要对应这个页面里的form的id<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">h:form&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="dataForm"</span><span style="color: #0000FF; ">&gt;</span></div><img src ="http://www.blogjava.net/Noah/aggbug/420611.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2014-11-26 13:38 <a href="http://www.blogjava.net/Noah/articles/420611.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mod_jk(Apache+mod_jk+tomcat)配置全攻略[转]</title><link>http://www.blogjava.net/Noah/articles/405908.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Fri, 01 Nov 2013 10:04:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/405908.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/405908.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/405908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/405908.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/405908.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首先虽然这个mod_jk已经过时，但还是放出来大家一起学习一下，文章主要分三部分内容： 1.第一部分：说明主要配置过程2.第二部分：贴出我的httpd.conf文件3.第三部分：对mod_jk代码讲解(来源百度)&nbsp;第一部分：配置1. 准备环境：操作系统：windows7httpd-2.2.21-win32-x86-no_ssl.msiapache-to...&nbsp;&nbsp;<a href='http://www.blogjava.net/Noah/articles/405908.html'>阅读全文</a><img src ="http://www.blogjava.net/Noah/aggbug/405908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2013-11-01 18:04 <a href="http://www.blogjava.net/Noah/articles/405908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache转发请求到Glassfish</title><link>http://www.blogjava.net/Noah/articles/405907.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Fri, 01 Nov 2013 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/405907.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/405907.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/405907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/405907.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/405907.html</trackback:ping><description><![CDATA[服务器的架设中，很多时候处于安全和性能上的一些需要，会用Apache来处理前端的一些请求，比如图片了一些东西。也为了安全考虑，只允许用户可以访问到Apache，所有有关动态交互的访问数据库的东西都在另外一台或几台服务上，这台服务器只有Apache可以访问，用户是不能访问到的。<br />所以这里就来说一下，这样的一个网络结构，应该怎么实现程序的正常处理。<br /><br />首先下载mod_jk.so，<br />windows:<a href="http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/">http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/</a><br />Linux:<a href="http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.21/">http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.21/</a><br />下载后，如果名字不一样，要改成和这个名字一样的，然后放置在apache的modules目录下<br />然后在apache的conf目录新建一个workers.properties文件，内容如下： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">#&nbsp;Define&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;real&nbsp;worker&nbsp;using&nbsp;ajp13<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />worker.list</span><span style="color: #000000">=</span><span style="color: #000000">worker1<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />#&nbsp;Set&nbsp;properties&nbsp;for&nbsp;worker1&nbsp;(ajp13)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />worker.worker1.type</span><span style="color: #000000">=</span><span style="color: #000000">ajp13<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />worker.worker1.host</span><span style="color: #000000">=</span><span style="color: #000000">127.0.0.1</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />#&nbsp;好多人都用8080端口<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />#&nbsp;但如果用了的话，就会被apache占用，<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />#&nbsp;这样就无法直接访问Glassfish了<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />worker.worker1.port</span><span style="color: #000000">=</span><span style="color: #000000">9090</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />worker.worker1.lbfactor</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />worker.worker1.cachesize</span><span style="color: #000000">=</span><span style="color: #000000">128</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />worker.worker1.cache_timeout</span><span style="color: #000000">=</span><span style="color: #000000">600</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />worker.worker1.socket_keepalive</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />#worker.worker1.reclycle_timeout</span><span style="color: #000000">=</span><span style="color: #000000">300</span></div>需要注意的是，host和port。host就是GlassFish所在主机的ip，端口就是GlassFish打开jk支持的Network Listener所监听的端口。GlassFish如何打开jk支持下文会讲述。<br />然后修改apache的httpd.conf文件，加入一些jk相关的配置：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">&lt;</span><span style="color: #000000">IfModule </span><span style="color: #000000">!</span><span style="color: #000000">mod_jk</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />LoadModule jk_module </span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">modules/mod_jk.so</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">IfModule</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">#</span><span style="color: #008000"> Where to find workers.properties</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">JkWorkersFile conf</span><span style="color: #000000">/</span><span style="color: #000000">workers</span><span style="color: #000000">.</span><span style="color: #000000">properties<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">#</span><span style="color: #008000"> Where to put jk logs</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">JkLogFile logs</span><span style="color: #000000">/</span><span style="color: #000000">mod_jk</span><span style="color: #000000">.</span><span style="color: #0000ff">log</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">#</span><span style="color: #008000"> Set the jk log level [debug/error/info]</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">JkLogLevel info<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">#</span><span style="color: #008000"> Select the log format</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">JkLogStampFormat </span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">[%a %b %d %H:%M:%S %Y] </span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">#</span><span style="color: #008000"> JkOptions indicate to send SSL KEY SIZE,</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">JkOptions </span><span style="color: #000000">+</span><span style="color: #000000">ForwardKeySize </span><span style="color: #000000">+</span><span style="color: #000000">ForwardURICompat </span><span style="color: #000000">-</span><span style="color: #000000">ForwardDirectories<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">#</span><span style="color: #008000"> JkRequestLogFormat set the request format</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">JkRequestLogFormat </span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">%w %V %T</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />JkShmFile logs</span><span style="color: #000000">/</span><span style="color: #000000">mod_jk</span><span style="color: #000000">.</span><span style="color: #000000">shm<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />JkMount </span><span style="color: #000000">/*.</span><span style="color: #000000">jsp worker1<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />JkMount </span><span style="color: #000000">/*.</span><span style="color: #000000">action worker1<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />JkMount </span><span style="color: #000000">/*.</span><span style="color: #0000ff">do</span><span style="color: #000000"> worker1</span></div>
<p>下面配置GlassFish v3：</p>
<p>通过浏览器进入GlassFish v3的admin console，展开configuration-&gt;network config-&gt;network listeners，页面会列出现有的所有监听的端口。例如默认的http-listener1监听8080，http-listener2监听8181，admin-listener监听4848。<br />刚才说了为了不影响 Glassfish的单独访问，这里我们不用8080，我们可以新建一个Listener,除了端口以外其它都一样,如图<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/noah/gf001.png" width="809" height="263" /><br />然后建成功后，点击进入，勾选上 JK Listener。<br /><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/noah/gf002.png" width="475" height="481" /><br />这样以来，所有有关动态解析的一些请求就会转给Glassfish处理了。<br /></p><img src ="http://www.blogjava.net/Noah/aggbug/405907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2013-11-01 17:52 <a href="http://www.blogjava.net/Noah/articles/405907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBOSS性能优化</title><link>http://www.blogjava.net/Noah/articles/340440.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Mon, 13 Dec 2010 01:15:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/340440.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/340440.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/340440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/340440.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/340440.html</trackback:ping><description><![CDATA[<p><font color="#800000" size="4"><strong>一.调整JBOSS最大连接数</strong></font>.</p>
<p>配置deploy/jboss-web.deployer/server.xml文件&nbsp;.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Connector<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; port="8080"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address="0.0.0.0"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads="1600"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; minSpareThreads="100"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxSpareThreads="250"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emptySessionPath="false"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redirectPort="8443"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acceptCount="800"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disableUploadTimeout="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URIEncoding="UTF-8"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;<br />
<font color="#ff6600">maxThreads</font>：表示最多同时处理的连接数。应该将线程数（最大线程数）设置比最大预期负载（同时并发的点击）多<font face="Times New Roman">25%</font>（经验规则）。<br />
<font color="#ff6600">acceptCount</font>：当同时连接的人数达到maxThreads时，还可以接收排队的连接。</p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><font size="3"><font color="#ff6600" face="Times New Roman">minSpareThread</font><font face="Arial">：指&#8220;启动以后，总是保持该数量的线程空闲等待&#8221;；设置比预期负载多<font face="Times New Roman">25%</font></font><font face="Arial">。</font></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="3" face="Times New Roman">&nbsp;</font></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><font size="3"><font face="Times New Roman"><font color="#ff6600">maxSpareThread</font><font face="Arial">：指&#8220;如果超过了</font><font face="Times New Roman">minSpareThread</font></font><font face="Arial">，然后总是保持该数量的线程空闲等待&#8221;；设置比预期负载多<font face="Times New Roman">25%</font><font face="Arial">。</font></font></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="3" face="Times New Roman">&nbsp;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中主要修改两个参数maxThreads和acceptCount值。增加maxThreads，减少acceptCount值有利缩短系统的响应时间。但是maxThreads和acceptCount的总和最高值不能超过6000，而且maxThreads过大会增加CPU和内存消耗，故低配置用户可通过降低maxThreads并同时增大acceptCount值来保证系统的稳定。</p>
<p>下表罗列出了在不同并发情况下jboss参数与并发在线的一般关系。<br />
</p>
<table border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td valign="top" width="114">
            <p align="center">并发数</p>
            </td>
            <td valign="top" width="114">
            <p align="center">服务器内存</p>
            </td>
            <td valign="top" width="281" colspan="2">
            <p align="center">jboss参数</p>
            </td>
        </tr>
        <tr>
            <td valign="top" width="114">&nbsp;</td>
            <td valign="top" width="114">&nbsp;</td>
            <td valign="top" width="114">maxThreads</td>
            <td valign="top" width="167">acceptCount</td>
        </tr>
        <tr>
            <td valign="top" width="114">50以下</td>
            <td valign="top" width="114">2G</td>
            <td valign="top" width="114">256</td>
            <td valign="top" width="167">800</td>
        </tr>
        <tr>
            <td valign="top" width="114">50-300</td>
            <td valign="top" width="114">4G</td>
            <td valign="top" width="114">600</td>
            <td valign="top" width="167">1024</td>
        </tr>
        <tr>
            <td valign="top" width="114">300-800</td>
            <td valign="top" width="114">8G</td>
            <td valign="top" width="114">1024</td>
            <td valign="top" width="167">1528</td>
        </tr>
        <tr>
            <td valign="top" width="114">800-1000</td>
            <td valign="top" width="114">8G</td>
            <td valign="top" width="114">1024</td>
            <td valign="top" width="167">2048</td>
        </tr>
        <tr>
            <td valign="top" width="114">1000-1200</td>
            <td valign="top" width="114">12G</td>
            <td valign="top" width="114">1526</td>
            <td valign="top" width="167">2048</td>
        </tr>
        <tr>
            <td valign="top" width="114">1200-1500</td>
            <td valign="top" width="114">16G</td>
            <td valign="top" width="114">2048</td>
            <td valign="top" width="167">2048</td>
        </tr>
        <tr>
            <td valign="top" width="114">&nbsp;</td>
            <td valign="top" width="114">&nbsp;</td>
            <td valign="top" width="114">&nbsp;</td>
            <td valign="top" width="167">&nbsp;</td>
        </tr>
        <tr>
            <td valign="top" width="114">&nbsp;</td>
            <td valign="top" width="114">&nbsp;</td>
            <td valign="top" width="114">&nbsp;</td>
            <td valign="top" width="167">&nbsp;</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p><font color="#800000" size="4"><strong>二.调整 jvm参数</strong></font></p>
<p><strong>A：JVM启动参数共分为三类：</strong> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其一是标准参数（-），所有的JVM实现都必须实现这些参数的功能，而且向后兼容；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其二是非标准参数（-X），指的是JVM底层的一些配置参数，这些参数在一般开发中默认即可，不需要任何配置。但是在生产环境中，并不保证所有jvm实现都满足，所以为了提高性能，往往需要调整这些参数，以求系统达到最佳性能。另外这些参数不保证向后兼容，也即是说&#8220;如有变更，恕不在后续版本的JDK通知&#8221;（这是官网上的原话）；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其三是非Stable参数（-XX），这类参数在jvm中是不稳定的，不适合日常使用的，后续也是可能会在没有通知的情况下就直接取消了，需要慎重使用。<br />
<strong>B：而<strong>JVM</strong> 内存又可分为三个主要的域</strong> ：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新域、旧域以及永久域。JVM生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后，便进入旧域。而在永久域中是用来存储JVM自己的反射对象的，如class和method对象，而且GC(Garbage Collection)不会在主程序运行期对永久域进行清理。其中新域和旧域属于堆，永久域是一个独立域并且不认为是堆的一部分。<br />
<strong>C：各主要参数的作用如下</strong> ：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Xms：设置jvm内存的初始大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Xmx：设置jvm内存的最大值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Xmn：设置新域的大小（这个似乎只对 jdk1.4来说是有效的，后来就废弃了）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Xss：设置每个线程的堆栈大小(也就是说,在相同物理内存下，减小这个值能生成更多的线程)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -XX：NewRatio :设置新域与旧域之比，如-XX：NewRatio = 4就表示新域与旧域之比为1：4<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -XX:NewSize：设置新域的初始值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -XX:MaxNewSize ：设置新域的最大值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-XX:PermSize：设置永久域的初始值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -XX:MaxPermSize：设置永久域的最大值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -XX:SurvivorRatio=n:设置新域中Eden区与两个Survivor区的比值。（Eden区主要是用来存放新生的对象，而两个 Survivor区则用来存放每次垃圾回收后存活下来的对象）<br />
<strong>D：常见的错误</strong> ：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.lang.OutOfMemoryError相信很多开发人员都用到过，这个主要就是JVM参数没有配好引起的，但是这种错误又分两种：java.lang.OutOfMemoryError: Java heap space和java.lang.OutOfMemoryError: PermGen space，其中前者是有关堆内存的内存溢出，可以同过配置-Xms和-Xmx参数来设置，而后者是有关永久域的内存溢出，可以通过配置 -XX:MaxPermSize来设置。<br />
</p>
<p><font color="#ff6600">下面是个例子,请根据实际情况进行修改,修改run.conf文件中的如下内容<strong><font color="#000000">：</font></strong><br />
</font>&nbsp;JAVA_OPTS="-Xms256m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Djboss.platform.mbeanserver"</p>
 <img src ="http://www.blogjava.net/Noah/aggbug/340440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2010-12-13 09:15 <a href="http://www.blogjava.net/Noah/articles/340440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j详细配置</title><link>http://www.blogjava.net/Noah/articles/329175.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Wed, 18 Aug 2010 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/329175.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/329175.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/329175.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/329175.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/329175.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">log4j.rootLogger</span><span style="color: #000000">=</span><span style="color: #000000">DEBUG</span><span style="color: #000000">,</span><span style="color: #000000">CONSOLE<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#打印到控制台<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.CONSOLE</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.ConsoleAppender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.CONSOLE.Threshold</span><span style="color: #000000">=</span><span style="color: #000000">DEBUG&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.CONSOLE.Target</span><span style="color: #000000">=</span><span style="color: #000000">System.out&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.CONSOLE.Encoding</span><span style="color: #000000">=</span><span style="color: #000000">GBK&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.CONSOLE.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.CONSOLE.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">log</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%d&nbsp;-&nbsp;%c&nbsp;-%-4r&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">%t</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m%n<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.CONSOLE.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">start</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%d{DATE}</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">DATE</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%p</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">PRIORITY</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%x</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">NDC</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%t</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">THREAD</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;n%c</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">CATEGORY</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%m</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">MESSAGE</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%n&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##打印到单一文件<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.FILE</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.FileAppender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.FILE.File</span><span style="color: #000000">=</span><span style="color: #000000">info/info.log&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.FILE.Threshold</span><span style="color: #000000">=</span><span style="color: #000000">DEBUG<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.FILE.Append</span><span style="color: #000000">=</span><span style="color: #000000">false&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.FILE.Encoding</span><span style="color: #000000">=</span><span style="color: #000000">GBK&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.FILE.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.FILE.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">log</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%d&nbsp;-&nbsp;%c&nbsp;-%-4r&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">%t</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m%n&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##&nbsp;Use&nbsp;this&nbsp;layout&nbsp;for&nbsp;LogFactor&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;analysis&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.ROLLING_FILE</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.RollingFileAppender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.ROLLING_FILE.Threshold</span><span style="color: #000000">=</span><span style="color: #000000">INFO<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.ROLLING_FILE.File</span><span style="color: #000000">=</span><span style="color: #000000">info/info<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.ROLLING_FILE.Append</span><span style="color: #000000">=</span><span style="color: #000000">true&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.CONSOLE_FILE.Encoding</span><span style="color: #000000">=</span><span style="color: #000000">GBK&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.ROLLING_FILE.MaxFileSize</span><span style="color: #000000">=</span><span style="color: #000000">3072KB&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.ROLLING_FILE.MaxBackupIndex</span><span style="color: #000000">=</span><span style="color: #000000">10000000</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.ROLLING_FILE.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />log4j.appender.ROLLING_FILE.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">log</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;&nbsp;%d&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;%c&nbsp;&nbsp;-%-4r&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">%t</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m%n&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##&nbsp;每天生成一个文件<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.Daily</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.DailyRollingFileAppender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.Daily.Threshold</span><span style="color: #000000">=</span><span style="color: #000000">DEBUG<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.Daily.File</span><span style="color: #000000">=</span><span style="color: #000000">daily/log<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.A1.Encoding</span><span style="color: #000000">=</span><span style="color: #000000">GBK&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.Daily.DatePattern</span><span style="color: #000000">=</span><span style="color: #000000">'.'yyyy-MM-dd&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.Daily.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#log4j.appender.Daily.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">log</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;&nbsp;%d&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;%c&nbsp;&nbsp;-%-4r&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">%t</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m%n&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#通过socket发送<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.SOCKET</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.RollingFileAppender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.SOCKET.RemoteHost</span><span style="color: #000000">=</span><span style="color: #000000">localhost&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.SOCKET.Port</span><span style="color: #000000">=</span><span style="color: #000000">5001</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.SOCKET.LocationInfo</span><span style="color: #000000">=</span><span style="color: #000000">true&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#&nbsp;Set&nbsp;up&nbsp;for&nbsp;Log&nbsp;Facter&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.SOCKET.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.SOCET.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">start</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%d{DATE}</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">DATE</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%p</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">PRIORITY</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%&nbsp;n%x</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">NDC</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%t</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">THREAD</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%c</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">CATEGORY</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%m</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">MESSAGE</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">%n%n&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#&nbsp;Log&nbsp;Factor&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;Appender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.LF5_APPENDER</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.lf5.LF5Appender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.LF5_APPENDER.MaxNumberOfRecords</span><span style="color: #000000">=</span><span style="color: #000000">2000</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#&nbsp;&nbsp;通过mail发送<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.MAIL</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.net.SMTPAppender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.MAIL.Threshold</span><span style="color: #000000">=</span><span style="color: #000000">FATAL&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.MAIL.BufferSize</span><span style="color: #000000">=</span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.MAIL.From</span><span style="color: #000000">=</span><span style="color: #000000">web@www.wuset.com&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.MAIL.SMTPHost</span><span style="color: #000000">=</span><span style="color: #000000">www.wusetu.com&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.MAIL.Subject</span><span style="color: #000000">=</span><span style="color: #000000">Log4J&nbsp;Message&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.MAIL.To</span><span style="color: #000000">=</span><span style="color: #000000">web@www.wusetu.com&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.MAIL.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.MAIL.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">log</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%d&nbsp;-&nbsp;%c&nbsp;-%-4r&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">%t</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m%n&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#&nbsp;&nbsp;&nbsp;存储到数据库<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.DATABASE</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.jdbc.JDBCAppender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.DATABASE.URL</span><span style="color: #000000">=</span><span style="color: #000000">jdbc:mysql://localhost:</span><span style="color: #000000">3306</span><span style="color: #000000">/test&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.DATABASE.driver</span><span style="color: #000000">=</span><span style="color: #000000">com.mysql.jdbc.Driver&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.DATABASE.user</span><span style="color: #000000">=</span><span style="color: #000000">root&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.DATABASE.password</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.DATABASE.sql</span><span style="color: #000000">=</span><span style="color: #000000">INSERT&nbsp;INTO&nbsp;LOG4J&nbsp;(Message)&nbsp;VALUES&nbsp;(</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">log</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%d&nbsp;-&nbsp;%c&nbsp;-%-4r&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">%t</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m%n')&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.DATABASE.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.DATABASE.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">log</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;&nbsp;%d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%c&nbsp;&nbsp;-%-4r&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">%t</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m%n&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#&nbsp;IM账号<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.im&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;net.cybercorlin.util.logger.appender.IMAppender&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.im.host&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;mail.cybercorlin.net&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.im.username&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;username&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.im.password&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;password&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.im.recipient&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;corlin@cybercorlin.net&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.im.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />##log4j.appender.im.layout.ConversionPattern&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">log</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;%d&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%c&nbsp;&nbsp;&nbsp;-%-4r&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">%t</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;%-5p&nbsp;&nbsp;&nbsp;%c&nbsp;&nbsp;&nbsp;%x&nbsp;&nbsp;&nbsp;-&nbsp;%m%n&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<img src ="http://www.blogjava.net/Noah/aggbug/329175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2010-08-18 09:34 <a href="http://www.blogjava.net/Noah/articles/329175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Liferay中部分配置文件(Portal.properties)的相关说明</title><link>http://www.blogjava.net/Noah/articles/286450.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Sun, 12 Jul 2009 05:19:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/286450.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/286450.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/286450.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/286450.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/286450.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>一句话也不用多说！</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#设置图片库中，上传图片的大小，单位是Bit&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />ig.image.max.size</span><span style="color: #000000">=</span><span style="color: #000000">10240000</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#允许图片上传的类型<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />ig.image.extensions</span><span style="color: #000000">=</span><span style="color: #000000">.bmp</span><span style="color: #000000">,</span><span style="color: #000000">.gif</span><span style="color: #000000">,</span><span style="color: #000000">.jpeg</span><span style="color: #000000">,</span><span style="color: #000000">.jpg</span><span style="color: #000000">,</span><span style="color: #000000">.png</span><span style="color: #000000">,</span><span style="color: #000000">.tif</span><span style="color: #000000">,</span><span style="color: #000000">.tiff<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置文档库中，上传文件的大小，单位是Bit<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />dl.file.max.size</span><span style="color: #000000">=</span><span style="color: #000000">3072000</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#允许文档上传的类型<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />dl.file.extensions</span><span style="color: #000000">=</span><span style="color: #000000">.bmp</span><span style="color: #000000">,</span><span style="color: #000000">.css</span><span style="color: #000000">,</span><span style="color: #000000">.doc</span><span style="color: #000000">,</span><span style="color: #000000">.dot</span><span style="color: #000000">,</span><span style="color: #000000">.gif</span><span style="color: #000000">,</span><span style="color: #000000">.gz</span><span style="color: #000000">,</span><span style="color: #000000">.htm</span><span style="color: #000000">,</span><span style="color: #000000">.html</span><span style="color: #000000">,</span><span style="color: #000000">.jpg</span><span style="color: #000000">,</span><span style="color: #000000">.js</span><span style="color: #000000">,</span><span style="color: #000000">.odb</span><span style="color: #000000">,</span><span style="color: #000000">.odf</span><span style="color: #000000">,</span><span style="color: #000000">.odg</span><span style="color: #000000">,</span><span style="color: #000000">.odp</span><span style="color: #000000">,</span><span style="color: #000000">.ods</span><span style="color: #000000">,</span><span style="color: #000000">.odt</span><span style="color: #000000">,</span><span style="color: #000000">.pdf</span><span style="color: #000000">,</span><span style="color: #000000">.png</span><span style="color: #000000">,</span><span style="color: #000000">.ppt</span><span style="color: #000000">,</span><span style="color: #000000">.rtf</span><span style="color: #000000">,</span><span style="color: #000000">.swf</span><span style="color: #000000">,</span><span style="color: #000000">.sxc</span><span style="color: #000000">,</span><span style="color: #000000">.sxi</span><span style="color: #000000">,</span><span style="color: #000000">.sxw</span><span style="color: #000000">,</span><span style="color: #000000">.tar</span><span style="color: #000000">,</span><span style="color: #000000">.tiff</span><span style="color: #000000">,</span><span style="color: #000000">.tgz</span><span style="color: #000000">,</span><span style="color: #000000">.txt</span><span style="color: #000000">,</span><span style="color: #000000">.vsd</span><span style="color: #000000">,</span><span style="color: #000000">.xls</span><span style="color: #000000">,</span><span style="color: #000000">.xml</span><span style="color: #000000">,</span><span style="color: #000000">.zip<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#登录相关（这个可以在企业管理里设置）<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />company.security.auth.type</span><span style="color: #000000">=</span><span style="color: #000000">screenName<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />company.security.auto.login</span><span style="color: #000000">=</span><span style="color: #000000">false<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />company.security.send.password</span><span style="color: #000000">=</span><span style="color: #000000">false<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />company.security.strangers</span><span style="color: #000000">=</span><span style="color: #000000">false<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />open.id.auth.enabled</span><span style="color: #000000">=</span><span style="color: #000000">false<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#是否出现用户首次登陆的协议页面<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />terms.of.use.required</span><span style="color: #000000">=</span><span style="color: #000000">true<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#默认用户布局<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#可以自己设置上面要放的Portlet。<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />default.user.layout.name</span><span style="color: #000000">=</span><span style="color: #000000">Home<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />default.user.layout.template.id</span><span style="color: #000000">=</span><span style="color: #000000">3_columns<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />default.user.layout.column-</span><span style="color: #000000">1</span><span style="color: #000000">=</span><span style="color: #000000"><br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />default.user.layout.column-</span><span style="color: #000000">2</span><span style="color: #000000">=</span><span style="color: #000000"><br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />default.user.layout.column-</span><span style="color: #000000">3</span><span style="color: #000000">=</span><span style="color: #000000"><br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />default.user.layout.column-</span><span style="color: #000000">4</span><span style="color: #000000">=</span><span style="color: #000000"><br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置默认的用户模板<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />layout.default.template.id</span><span style="color: #000000">=</span><span style="color: #000000">2_columns_ii<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#Session控制<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />session.timeout</span><span style="color: #000000">=</span><span style="color: #000000">30</span><span style="color: #000000"><br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />session.timeout.warning</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000"><br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />session.timeout.auto.extend</span><span style="color: #000000">=</span><span style="color: #000000">false<br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#隐藏没权限的Portlet<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />layout.show.portlet.access.denied</span><span style="color: #000000">=</span><span style="color: #000000">false<br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#隐藏不活动的Portlet<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />layout.show.portlet.inactive</span><span style="color: #000000">=</span><span style="color: #000000">false<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置用户是否可以增加Portlet<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />layout.add.portlets</span><span style="color: #000000">=</span><span style="color: #000000">true<br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置是否显示最大化图标<br />
</span><span style="color: #008080">46</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />layout.guest.show.max.icon</span><span style="color: #000000">=</span><span style="color: #000000">true<br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置是否显示最小化图标<br />
</span><span style="color: #008080">48</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />layout.guest.show.min.icon</span><span style="color: #000000">=</span><span style="color: #000000">false<br />
</span><span style="color: #008080">49</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">50</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#权限设置的读取路径<br />
</span><span style="color: #008080">51</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />resource.actions.configs</span><span style="color: #000000">=</span><span style="color: #000000">resource-actions/default.xml<br />
</span><span style="color: #008080">52</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">53</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置默认的用户头像<br />
</span><span style="color: #008080">54</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />image.default.user.female.portrait</span><span style="color: #000000">=</span><span style="color: #000000">com/liferay/portal/dependencies/user_female_portrait.gif<br />
</span><span style="color: #008080">55</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />image.default.user.male.portrait</span><span style="color: #000000">=</span><span style="color: #000000">com/liferay/portal/dependencies/user_male_portrait.gif<br />
</span><span style="color: #008080">56</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">57</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置默认的Logo<br />
</span><span style="color: #008080">58</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />image.default.company.logo</span><span style="color: #000000">=</span><span style="color: #000000">com/liferay/portal/dependencies/company_logo.png<br />
</span><span style="color: #008080">59</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">60</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置认证登陆的页面<br />
</span><span style="color: #008080">61</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />auth.login.url</span><span style="color: #000000">=</span><span style="color: #000000">/web/</span><span style="color: #000000">12702</span><span style="color: #000000">/</span><span style="color: #000000">1</span><span style="color: #000000"><br />
</span><span style="color: #008080">62</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置登出后的页面路径<br />
</span><span style="color: #008080">63</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />default.logout.page.path</span><span style="color: #000000">=</span><span style="color: #000000">/web/</span><span style="color: #000000">12702</span><span style="color: #000000"><br />
</span><span style="color: #008080">64</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">65</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#设置默认的用户角色<br />
</span><span style="color: #008080">66</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />admin.default.role.names</span><span style="color: #000000">=</span><span style="color: #000000">Power&nbsp;User\nUser<br />
</span><span style="color: #008080">67</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<img src ="http://www.blogjava.net/Noah/aggbug/286450.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2009-07-12 13:19 <a href="http://www.blogjava.net/Noah/articles/286450.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CAS单点登陆,中文用户名无法验证解决方案</title><link>http://www.blogjava.net/Noah/articles/286449.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Sun, 12 Jul 2009 05:02:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/286449.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/286449.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/286449.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/286449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/286449.html</trackback:ping><description><![CDATA[<p>登陆名如果用中文的话，会出现乱码，导致无法验证通过。解决中文问题无非就是编码问题，其中需要转换编码的有以下几个地方．</p>
<p>第一，在Web.xml文件里加上Filter，对所有页面进行一次编码转换．</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">EncodingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">EncodingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.xyb.EncodingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">encoding_charset</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">encoding</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;gb2312</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">ignore</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">true</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">EncodingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/*</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span></div>
<p>下面是EncodingFilter类：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.xyb;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.Filter;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterChain;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterConfig;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletException;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletRequest;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletResponse;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img id="Codehighlighter1_260_288_Open_Image" onclick="this.style.display='none'; Codehighlighter1_260_288_Open_Text.style.display='none'; Codehighlighter1_260_288_Closed_Image.style.display='inline'; Codehighlighter1_260_288_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_260_288_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_260_288_Closed_Text.style.display='none'; Codehighlighter1_260_288_Open_Image.style.display='inline'; Codehighlighter1_260_288_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_260_288_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_260_288_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />*<br />
</span><span style="color: #008080">14</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;XiangYabin<br />
</span><span style="color: #008080">15</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" /></span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img id="Codehighlighter1_336_1811_Open_Image" onclick="this.style.display='none'; Codehighlighter1_336_1811_Open_Text.style.display='none'; Codehighlighter1_336_1811_Closed_Image.style.display='inline'; Codehighlighter1_336_1811_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_336_1811_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_336_1811_Closed_Text.style.display='none'; Codehighlighter1_336_1811_Open_Image.style.display='inline'; Codehighlighter1_336_1811_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;EncodingFilter&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Filter&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_336_1811_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_336_1811_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;String&nbsp;encoding&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;FilterConfig&nbsp;filterConfig&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;ignore&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img id="Codehighlighter1_497_585_Open_Image" onclick="this.style.display='none'; Codehighlighter1_497_585_Open_Text.style.display='none'; Codehighlighter1_497_585_Closed_Image.style.display='inline'; Codehighlighter1_497_585_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_497_585_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_497_585_Closed_Text.style.display='none'; Codehighlighter1_497_585_Open_Image.style.display='inline'; Codehighlighter1_497_585_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;destroy()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_497_585_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_497_585_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.encoding&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.filterConfig&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;doFilter(ServletRequest&nbsp;request,&nbsp;ServletResponse&nbsp;response,<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilterChain&nbsp;chain)<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img id="Codehighlighter1_747_1139_Open_Image" onclick="this.style.display='none'; Codehighlighter1_747_1139_Open_Text.style.display='none'; Codehighlighter1_747_1139_Closed_Image.style.display='inline'; Codehighlighter1_747_1139_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_747_1139_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_747_1139_Closed_Text.style.display='none'; Codehighlighter1_747_1139_Open_Image.style.display='inline'; Codehighlighter1_747_1139_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException,&nbsp;ServletException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_747_1139_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_747_1139_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Conditionally&nbsp;select&nbsp;and&nbsp;set&nbsp;the&nbsp;character&nbsp;encoding&nbsp;to&nbsp;be&nbsp;used</span><span style="color: #008000"><br />
</span><span style="color: #008080">33</span><span style="color: #008000"><img id="Codehighlighter1_879_1034_Open_Image" onclick="this.style.display='none'; Codehighlighter1_879_1034_Open_Text.style.display='none'; Codehighlighter1_879_1034_Closed_Image.style.display='inline'; Codehighlighter1_879_1034_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_879_1034_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_879_1034_Closed_Text.style.display='none'; Codehighlighter1_879_1034_Open_Image.style.display='inline'; Codehighlighter1_879_1034_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(ignore&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;(request.getCharacterEncoding()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">))&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_879_1034_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_879_1034_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;encoding&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;selectEncoding(request);<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(encoding&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(encoding);<br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Pass&nbsp;control&nbsp;on&nbsp;to&nbsp;the&nbsp;next&nbsp;filter</span><span style="color: #008000"><br />
</span><span style="color: #008080">40</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chain.doFilter(request,&nbsp;response);<br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img id="Codehighlighter1_1218_1681_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1218_1681_Open_Text.style.display='none'; Codehighlighter1_1218_1681_Closed_Image.style.display='inline'; Codehighlighter1_1218_1681_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1218_1681_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1218_1681_Closed_Text.style.display='none'; Codehighlighter1_1218_1681_Open_Image.style.display='inline'; Codehighlighter1_1218_1681_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init(FilterConfig&nbsp;filterConfig)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1218_1681_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1218_1681_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">46</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.filterConfig&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;filterConfig;<br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.encoding&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;filterConfig.getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">encoding</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">48</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;filterConfig.getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">ignore</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">49</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
</span><span style="color: #008080">50</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.ignore&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
</span><span style="color: #008080">51</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(value.equalsIgnoreCase(</span><span style="color: #000000">"</span><span style="color: #000000">true</span><span style="color: #000000">"</span><span style="color: #000000">))<br />
</span><span style="color: #008080">52</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.ignore&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
</span><span style="color: #008080">53</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(value.equalsIgnoreCase(</span><span style="color: #000000">"</span><span style="color: #000000">yes</span><span style="color: #000000">"</span><span style="color: #000000">))<br />
</span><span style="color: #008080">54</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.ignore&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
</span><span style="color: #008080">55</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
</span><span style="color: #008080">56</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.ignore&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
</span><span style="color: #008080">57</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">58</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">59</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">60</span><span style="color: #000000"><img id="Codehighlighter1_1748_1804_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1748_1804_Open_Text.style.display='none'; Codehighlighter1_1748_1804_Closed_Image.style.display='inline'; Codehighlighter1_1748_1804_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1748_1804_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1748_1804_Closed_Text.style.display='none'; Codehighlighter1_1748_1804_Open_Image.style.display='inline'; Codehighlighter1_1748_1804_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;String&nbsp;selectEncoding(ServletRequest&nbsp;request)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1748_1804_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1748_1804_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">61</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">62</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">this</span><span style="color: #000000">.encoding);<br />
</span><span style="color: #008080">63</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">64</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">65</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">66</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
<p>第二步，修改CAS登陆验证页面的编码，如果你没换过这个主题的话，默认的是修改WEB-INF\view\jsp\default\ui\casLoginView.jsp文件，在最上面加上&lt;%@ page pageEncoding="gb2312"%&gt;。这里要特别注意一下，这个页面的编码要和上面XML文件里写的编码一致。</p>
<p>第三步，修改验证成功后做跳转的页面。也就是WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp文件，在最上面加上&lt;%@ page pageEncoding="UTF-8"%&gt;。这里特别注意的是这个页面的编码要和你跳转过去的那个页面的编码一致，换句话说，客户端的验证页面的编码要和这个地方的一致，不一致的话，要转换一下。</p>
<p>经过这三步之后，理论上讲就已经可以验证通过了。</p>
<img src ="http://www.blogjava.net/Noah/aggbug/286449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2009-07-12 13:02 <a href="http://www.blogjava.net/Noah/articles/286449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Liferay中使用CAS实现单点登陆(SSO)</title><link>http://www.blogjava.net/Noah/articles/256018.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Sun, 22 Feb 2009 04:53:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/256018.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/256018.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/256018.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/256018.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/256018.html</trackback:ping><description><![CDATA[<p>单点登陆(SSO)的实现方式有很多种，这里所说的是用CAS实现，这也是Liferay中所采纳的方式。至于什么是CAS，单点登陆实现的原理等，这里不做解释，直接一步一步明说实现方式，好了，多一个字的费话也不说了。</p>
<p>第一步，创建证书</p>
<p>keytool -genkey -alias tomcat -<span style="color: #c0c0c0">keystore</span> c:\mykeystore&nbsp; -<span style="color: #c0c0c0">dname</span> "CN=<span style="color: #ff0000">xyb</span>, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass&nbsp;123456 -storepass 123456</p>
<p>PS:</p>
<p>&nbsp;-genkey&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 创建一个证书<br />
-alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 证书的别名<br />
-keystore&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定生成此证书的路径(可不写，默认存在系统的Home目录下.keystore文件中<br />
-storepass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定密钥库的密码<br />
-keypass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定别名条目的密码<br />
-dname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定证书拥有者信息(可不写，但，系统会提示你依次输入这些信息，特别要注意&#8220;CN&#8221;的值是你想做为CAS服务器的这台机器的域名或机器名，但就是不能是IP)<br />
-keyalg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定密钥的算法(可不写)&nbsp;&nbsp;&nbsp; <br />
-validity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定创建的证书有效期多少天(可不写，默认为90天)</p>
<p>第二步，导出证书</p>
<p>keytool -export -alias tomcat -<span style="color: #c0c0c0">keystore</span> c:\mykeystore -file c:\mycerts.cer -storepass 123456</p>
<p>PS:</p>
<p>-export&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将别名指定的证书导出到文件<br />
-keystore&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定生成此证书的路径(上一步中写的什么这就写什么，如果没写，这也不写)<br />
&nbsp;-file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定导出到文件的文件名</p>
<p>第三步，把导出的证书导入到客户端服务器</p>
<p>keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -storepass&nbsp;123456 -file c:\mycerts.cer</p>
<p>PS:</p>
<p>-import&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将已签名数字证书导入密钥库<br />
-file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定要导入到密钥库的文件名(也就是上一步导出的那个文件)<br />
有一个提示：是否信任这个证书，输入 Y，回车。</p>
<p>第四步，下载cas集成包。将下载后的文件改名为cas-web，放置在liferay的webapps目录下，在conf/server.xml中找到下面这段，去掉原有的注释并修改为：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Connector&nbsp;</span><span style="color: #ff0000">port</span><span style="color: #0000ff">="8443"</span><span style="color: #ff0000">&nbsp;maxHttpHeaderSize</span><span style="color: #0000ff">="8192"</span><span style="color: #ff0000">&nbsp;maxThreads</span><span style="color: #0000ff">="150"</span><span style="color: #ff0000">&nbsp;minSpareThreads</span><span style="color: #0000ff">="25"</span><span style="color: #ff0000">&nbsp;maxSpareThreads</span><span style="color: #0000ff">="75"</span><span style="color: #ff0000">&nbsp;enableLookups</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000">&nbsp;disableUploadTimeout</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000">&nbsp;acceptCount</span><span style="color: #0000ff">="100"</span><span style="color: #ff0000">&nbsp;scheme</span><span style="color: #0000ff">="https"</span><span style="color: #ff0000">&nbsp;secure</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000">&nbsp;clientAuth</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000">&nbsp;sslProtocol</span><span style="color: #0000ff">="TLS"</span><span style="color: #ff0000">&nbsp;URIEncoding</span><span style="color: #0000ff">="UTF-8"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #ff0000">&nbsp;keystorePass</span><span style="color: #0000ff">="123456"</span><span style="color: #ff0000">&nbsp;keyAlias</span><span style="color: #0000ff">="tomcat"</span><span style="color: #0000ff">/&gt;</span></div>
<p>第五步，在Liferay的webapps\ROOT\WEB-INF\classes\portal-ext.properties下添加如下内容：</p>
<p>cas.auth.enabled=true<br />
cas.login.url=https://<span style="color: #ff0000">xyb</span>:8443/cas-web/login<br />
cas.logout.url=https://<span style="color: #ff0000">xyb</span>:8443/cas-web/logout<br />
cas.server.name=客户端IP:8080<br />
cas.service.url=<br />
#cas.service.url=http://localhost:8080/c/portal/login<br />
cas.validate.url=https://<span style="color: #ff0000">xyb</span>:8443/cas-web/proxyValidate</p>
<p>如果没在Liferay下，只是普通的Web程序可用Filter来实现，打开Web-INF\Web.XML文件，增加如下代码</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px">
<p><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">CASFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">edu.yale.its.tp.cas.client.filter.CASFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">edu.yale.its.tp.cas.client.filter.loginUrl</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">https://xyb:8443/cas-web/login</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">这里的xyb是CAS服务端的IP或机器名</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">edu.yale.its.tp.cas.client.filter.validateUrl</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">https://xyb:8443/cas-web/proxyValidate</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">edu.yale.its.tp.cas.client.filter.serverName</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">localhost:8080</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">client:port就是需要CAS需要拦截的地址和端口，一般就是这个TOMCAT所启动的IP和port</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">CASFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/*</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #008000">&lt;!--这里就是你要拦截的URL请求</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span></p>
</div>
<p>&nbsp;</p>
<p>最后一步，在客户端获取CAS认证通过的用户名，并修改身份验证程序为只通过用户名来验证。如是在Liferay下就不用做这一步了，Liferay中本身的验证是ScreenName字段</p>
<p>1、在JSP或Servlet中的用法：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">edu.yale.its.tp.cas.client.filter.CASFilter</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javax.servlet.http.HttpServletRequest</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javax.servlet.http.HttpSession</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;%</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />HttpSession&nbsp;ses&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getSession();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />String&nbsp;screenName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />(String)ses.getAttribute(CASFilter.CAS_FILTER_USER);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">screenName==:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">screenName);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">%&gt;</span><span style="color: #000000">&nbsp;</span></div>
<p>2、在Java中通过 Session 获取登录用户名</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #008000">//</span><span style="color: #008000">&nbsp;以下两者都可以</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">session.getAttribute(CASFilter.CAS_FILTER_USER);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />session.getAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">edu.yale.its.tp.cas.client.filter.user</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
<p>3、在 JSTL 中获取用户名的方法</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">&lt;</span><span style="color: #000000">c:out&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${sessionScope[CAS:'edu.yale.its.tp.cas.client.filter.user']}</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span></div>
<p><br />
问题汇总：</p>
<p>&nbsp;<font color="#ff0000">严重: edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator prox<br />
yList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://192.168.1.111:8443/cas/proxyValidate] ticket=[ST-0-9h7Mx5HK3pfsdxRv<br />
MD3y] service=[http%3A%2F%2F192.168.1.222%3A8080%2Fservlets-examples%2Fservlet%2FHelloWorldExample] renew=false]]]</font></p>
<p>这个CAS异常是从CAS Client里面抛出，是当我们不使用证书的CN去访问域名的时候（比如上文是用IP访问而且证书的CN是该IP对应的域名而非该IP），CASClient无法信任，也就是我上面特意提到的那个CN的问题。要特别注意。</p>
<p>还有一种情况就是客户端证书没有导入,同样也报这个错误,最终可以归为一句话,肯定是证书验证没有通过所致.</p>
<p>&nbsp;</p>
<p style="color: red">INFO [org.jasig.cas.authentication.AuthenticationManager<br />
Impl] - &lt;AuthenticationHandler: cn.com.tiansky.cas.authenticationHandlers.UPAuthenticationHandler successfully authenticated the user which provided the followi<br />
ng credentials: [username: test]&gt;</p>
<p>就种错误，可能是客户端的那个配置文件里写的不太对。也就是上面说的第五步，要多注意一下。</p>
<p>&nbsp;</p>
<p><span style="color: red">java.io.IOException: Cannot recover key<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(JSSE14Socket<br />
Factory.java:125)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESo<br />
cketFactory.java:88)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoi<br />
nt.java:292)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.coyote.http11.Http11BaseProtocol.init(Http11BaseProtocol.j<br />
ava:138)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.connector.Connector.initialize(Connector.java:101</span></p>
<p>这种错误，可能是你生成的证书有问题，如果keypass和storepass的密码不一致也会把这个错(不知为什么非要设成一样的)</p>
<img src ="http://www.blogjava.net/Noah/aggbug/256018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2009-02-22 12:53 <a href="http://www.blogjava.net/Noah/articles/256018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java获取当前日期的前一个月，前一天的时间</title><link>http://www.blogjava.net/Noah/articles/250562.html</link><dc:creator>眼镜蛇</dc:creator><author>眼镜蛇</author><pubDate>Thu, 08 Jan 2009 15:20:00 GMT</pubDate><guid>http://www.blogjava.net/Noah/articles/250562.html</guid><wfw:comment>http://www.blogjava.net/Noah/comments/250562.html</wfw:comment><comments>http://www.blogjava.net/Noah/articles/250562.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/Noah/comments/commentRss/250562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Noah/services/trackbacks/250562.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; height: 121px; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">Calendar&nbsp;calendar&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Calendar.getInstance();<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;calendar.add(Calendar.DATE,&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得到前一天</span><span style="color: #008000"><br />
</span><span style="color: #008080">3</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;calendar.add(Calendar.MONTH,&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得到前一个月</span><span style="color: #008000"><br />
</span><span style="color: #008080">4</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;year&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;calendar.get(Calendar.YEAR);<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;month&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;calendar.get(Calendar.MONTH)</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span></div>
注意月份加一
<img src ="http://www.blogjava.net/Noah/aggbug/250562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Noah/" target="_blank">眼镜蛇</a> 2009-01-08 23:20 <a href="http://www.blogjava.net/Noah/articles/250562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>