﻿<?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-狼爱上狸-随笔分类-Tomcat</title><link>http://www.blogjava.net/waterjava/category/23635.html</link><description>我胡汉三又回来了</description><language>zh-cn</language><lastBuildDate>Wed, 11 Mar 2020 10:07:45 GMT</lastBuildDate><pubDate>Wed, 11 Mar 2020 10:07:45 GMT</pubDate><ttl>60</ttl><item><title>安装配置Shibboleth</title><link>http://www.blogjava.net/waterjava/archive/2020/03/09/435243.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Mon, 09 Mar 2020 10:20:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2020/03/09/435243.html</guid><wfw:comment>http://www.blogjava.net/waterjava/comments/435243.html</wfw:comment><comments>http://www.blogjava.net/waterjava/archive/2020/03/09/435243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/waterjava/comments/commentRss/435243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/waterjava/services/trackbacks/435243.html</trackback:ping><description><![CDATA[<div unsafe=""  markdown-body"="" data-spm-anchor-id="a2c4e.11153940.0.i3.7baa2800F95wnw" style="box-sizing: border-box; margin: 0px; text-size-adjust: 100%; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 32px; overflow-wrap: break-word; overflow: hidden; word-break: break-all; background-color: #ffffff;"><h3>0.前言</h3><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">本文介绍了如何搭建Shibboleth，实现Shibboleth+Ldap的SSO解决方案</p><h3>1.什么是Shibboleth</h3><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">Shibboleth是一个基于标准的，实现组织内部或跨组织的网页单点登录的开源软件包。它允许站点为处于私有保护方式下的受保护的在线资源做出被通知的认证决定。</p><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">Shibboleth软件工具广泛使用联合的身份标准，主要是OASIS安全声称标记语言（SAML），来提供一个联合单点登录和属性交换框架。一个用户用他的组织的证书认证，组织（或IdP）传送最少的必要的身份信息给SP实现认证决定。Shibboleth也提供扩展的隐私功能，允许一个用户和他们的主站点来控制释放给每一个应用的属性。</p><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">Shibboleth项目作为一个Internet2中间件活动启动于2000年，这年晚些时候该项目和OASIS SAML工作组的工作相联系。Shibboleth1.0 于2003年发布，并快速被全世界的研究和教育机构使用。随着2005年SAML2.0的发布，2006年Shibboleth2.0也发布，SAML标准升级到包含所有的多边，由Shibboleth首创的元数据驱动方法。</p><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">Shibboleth作为开源软件开发，在Apache 软件许可证下发布。关于个别部件的更多信息可以在产品页面看到。</p><h3>2.安装Shibboleth Identity Provider v3.2.1</h3><ol style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px 0px 0px 2em; list-style-position: initial; list-style-image: initial;"><li style="box-sizing: border-box; margin: 0px; padding: 0px;">切换成root</li></ol><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code nginx"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;"><span style="box-sizing: border-box; color: #66d9ef;">sudo</span> su </code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">2.下载Shibboleth Identity Provider v3.2.1</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code nginx"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;"><span style="box-sizing: border-box; color: #66d9ef;">wget</span> http://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-3.2.1.tar.gz tar -xzvf shibboleth-identity-provider-<span style="box-sizing: border-box; color: #ae81ff;">3</span>.<span style="box-sizing: border-box; color: #ae81ff;">2</span>.<span style="box-sizing: border-box; color: #ae81ff;">1</span>.tar.gz cd shibboleth-identity-provider-<span style="box-sizing: border-box; color: #ae81ff;">3</span>.<span style="box-sizing: border-box; color: #ae81ff;">2</span>.<span style="box-sizing: border-box; color: #ae81ff;">1</span></code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">3.安装Shibboleth Idenentity Provider:</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code perl"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;">sh-<span style="box-sizing: border-box; color: #ae81ff;">3.2</span><span style="box-sizing: border-box; color: #75715e;"># ./install.sh </span> Source (Distribution) Directory (press &lt;enter&gt; to <span style="box-sizing: border-box; color: #f92672;">accept</span> default): [<span style="box-sizing: border-box; color: #ae81ff;">/Users/zhaoyu</span>.zhaoyu/Applications/shibboleth-identity-provider-<span style="box-sizing: border-box; color: #ae81ff;">3.3</span>.<span style="box-sizing: border-box; color: #ae81ff;">2</span>]  Installation Directory: [<span style="box-sizing: border-box; color: #ae81ff;">/opt/shibboleth</span>-idp]  Hostname: [localhost.localdomain] testdomain.com SAML EntityID: [https:<span style="box-sizing: border-box; color: #ae81ff;">//testdomain</span>.com/idp/shibboleth]  Attribute Scope: [localdomain]  Backchannel PKCS12 Password:  Re-enter password:  Cookie Encryption Key Password:  Re-enter password:  Warning: <span style="box-sizing: border-box; color: #ae81ff;">/opt/shibboleth</span>-idp/bin does <span style="box-sizing: border-box; color: #f92672;">not</span> exist. Warning: <span style="box-sizing: border-box; color: #ae81ff;">/opt/shibboleth</span>-idp/dist does <span style="box-sizing: border-box; color: #f92672;">not</span> exist. Warning: <span style="box-sizing: border-box; color: #ae81ff;">/opt/shibboleth</span>-idp/doc does <span style="box-sizing: border-box; color: #f92672;">not</span> exist. Warning: <span style="box-sizing: border-box; color: #ae81ff;">/opt/shibboleth</span>-idp/<span style="box-sizing: border-box; color: #f92672;">system</span> does <span style="box-sizing: border-box; color: #f92672;">not</span> exist. Warning: <span style="box-sizing: border-box; color: #ae81ff;">/opt/shibboleth</span>-idp/webapp does <span style="box-sizing: border-box; color: #f92672;">not</span> exist. Generating Signing Key, CN = testdomain.com URI = https:<span style="box-sizing: border-box; color: #ae81ff;">//testdomain</span>.com/idp/shibboleth ... ...done Creating Encryption Key, CN = testdomain.com URI = https:<span style="box-sizing: border-box; color: #ae81ff;">//testdomain</span>.com/idp/shibboleth ... ...done Creating Backchannel keystore, CN = testdomain.com URI = https:<span style="box-sizing: border-box; color: #ae81ff;">//testdomain</span>.com/idp/shibboleth ... ...done Creating cookie encryption key files... ...done Rebuilding /opt/shibboleth-idp/war/idp.war ... ...done  BUILD SUCCESSFUL Total <span style="box-sizing: border-box; color: #f92672;">time</span>: <span style="box-sizing: border-box; color: #ae81ff;">1</span> minute <span style="box-sizing: border-box; color: #ae81ff;">14</span> seconds </code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">(from now "{idp.home}" == /opt/shibboleth-idp/)<br style="box-sizing: border-box;" />4.导入 JST library (status界面会用到):</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code ruby"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;">cd /opt/shibboleth-idp/edit-webapp/WEB-INF/lib wget <span style="box-sizing: border-box; color: #66d9ef;">https:</span>/<span style="box-sizing: border-box; color: #ae81ff;">/build.shibboleth.net/nexus</span><span style="box-sizing: border-box; color: #ae81ff;">/service/local</span><span style="box-sizing: border-box; color: #ae81ff;">/repositories/thirdparty</span><span style="box-sizing: border-box; color: #ae81ff;">/content/javax</span><span style="box-sizing: border-box; color: #ae81ff;">/servlet/jstl</span><span style="box-sizing: border-box; color: #ae81ff;">/1.2/jstl</span>-<span style="box-sizing: border-box; color: #ae81ff;">1.2</span>.jar cd /opt/shibboleth-idp/bin ./build.sh -Didp.target.dir=<span style="box-sizing: border-box; color: #ae81ff;">/opt/shibboleth</span>-idp</code></pre><h3>3.安装指引</h3><h4>3.1 安装apache tomcat 8</h4><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">1.切换成root</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code nginx"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;"><span style="box-sizing: border-box; color: #66d9ef;">sudo</span> su -</code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">2.修改tomcat的%{CATALINA_HOME}/conf/server.xml<br style="box-sizing: border-box;" />将8080端口和8443端口的地方分别改成80和443</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code xml"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;"> <span style="box-sizing: border-box;">&lt;<span style="box-sizing: border-box; color: #f92672;">Connector</span> <span style="box-sizing: border-box; color: #f92672;">port</span>=<span style="box-sizing: border-box; color: #e6db74;">"80"</span> <span style="box-sizing: border-box; color: #f92672;">protocol</span>=<span style="box-sizing: border-box; color: #e6db74;">"HTTP/1.1"</span>                                                                                                    <span style="box-sizing: border-box; color: #f92672;">connectionTimeout</span>=<span style="box-sizing: border-box; color: #e6db74;">"20000"</span>                <span style="box-sizing: border-box; color: #f92672;">redirectPort</span>=<span style="box-sizing: border-box; color: #e6db74;">"443"</span> /&gt;</span></code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">3.生成证书文件</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code markdown"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;">[chengxu@local]keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "./tomcat.keystore" 输入密钥库口令:   再次输入新口令:  您的名字与姓氏是什么? [<span style="box-sizing: border-box; color: #66d9ef;">Unknown</span>]:  <span style="box-sizing: border-box; color: #ae81ff;">cheng</span> 您的组织单位名称是什么? [<span style="box-sizing: border-box; color: #66d9ef;">Unknown</span>]:  <span style="box-sizing: border-box; color: #ae81ff;">testdomain.com</span> 您的组织名称是什么? [<span style="box-sizing: border-box; color: #66d9ef;">Unknown</span>]:  <span style="box-sizing: border-box; color: #ae81ff;">testdomain.com</span> 您所在的城市或区域名称是什么? [<span style="box-sizing: border-box; color: #66d9ef;">Unknown</span>]:   <span style="box-sizing: border-box; color: #ae81ff;">您所在的省/市/自治区名称是什么?</span> [<span style="box-sizing: border-box; color: #66d9ef;">Unknown</span>]:   <span style="box-sizing: border-box; color: #ae81ff;">该单位的双字母国家/地区代码是什么?</span> [<span style="box-sizing: border-box; color: #66d9ef;">Unknown</span>]:   <span style="box-sizing: border-box; color: #ae81ff;">CN=cheng, OU=testdomain.com, O=testdomain.com, L=Unknown, ST=Unknown, C=Unknown是否正确?</span> [<span style="box-sizing: border-box; color: #66d9ef;">否</span>]:  <span style="box-sizing: border-box; color: #ae81ff;">是 </span>  输入 <span style="box-sizing: border-box;"><span style="box-sizing: border-box;">&lt;<span style="box-sizing: border-box; color: #f92672;">tomcat</span>&gt;</span></span> 的密钥口令 <span style="box-sizing: border-box; color: #a6e22e;">  (如果和密钥库口令相同, 按回车):  </span> 再次输入新口令:  [chengxu@local]</code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">4.修改tomcat的%{CATALINA_HOME}/conf/server.xml，使支持https协议</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code xml"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;"><span style="box-sizing: border-box;">&lt;<span style="box-sizing: border-box; color: #f92672;">Connector</span> <span style="box-sizing: border-box; color: #f92672;">port</span>=<span style="box-sizing: border-box; color: #e6db74;">"443"</span> <span style="box-sizing: border-box; color: #f92672;">protocol</span>=<span style="box-sizing: border-box; color: #e6db74;">"org.apache.coyote.http11.Http11Protocol"</span>                 <span style="box-sizing: border-box; color: #f92672;">maxThreads</span>=<span style="box-sizing: border-box; color: #e6db74;">"150"</span> <span style="box-sizing: border-box; color: #f92672;">SSLEnabled</span>=<span style="box-sizing: border-box; color: #e6db74;">"true"</span> <span style="box-sizing: border-box; color: #f92672;">scheme</span>=<span style="box-sizing: border-box; color: #e6db74;">"https"</span> <span style="box-sizing: border-box; color: #f92672;">secure</span>=<span style="box-sizing: border-box; color: #e6db74;">"true"</span>                 <span style="box-sizing: border-box; color: #f92672;">clientAuth</span>=<span style="box-sizing: border-box; color: #e6db74;">"false"</span> <span style="box-sizing: border-box; color: #f92672;">sslProtocol</span>=<span style="box-sizing: border-box; color: #e6db74;">"TLS"</span>                  <span style="box-sizing: border-box; color: #f92672;">keystoreFile</span>=<span style="box-sizing: border-box; color: #e6db74;">"/Users/chengxu/Shibboleth/tomcat/tomcat.keystore"</span>                    <span style="box-sizing: border-box; color: #f92672;">keystorePass</span>=<span style="box-sizing: border-box; color: #e6db74;">"xxx"</span>/&gt;</span> </code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">5.发布Idp Web Application到Tomcat 8 container</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code apache"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;"><span style="box-sizing: border-box; color: #66d9ef;">vim</span> <span style="box-sizing: border-box; color: #e6db74;">%{CATALINA_HOME}</span>/conf/Catalina/localhost/idp.xml</code></pre><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code hljs"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;"><span style="box-sizing: border-box;">&lt;<span style="box-sizing: border-box; color: #f92672;">Context</span> <span style="box-sizing: border-box; color: #f92672;">docBase</span>=<span style="box-sizing: border-box; color: #e6db74;">"/opt/shibboleth-idp/war/idp.war"</span>          <span style="box-sizing: border-box; color: #f92672;">privileged</span>=<span style="box-sizing: border-box; color: #e6db74;">"true"</span>          <span style="box-sizing: border-box; color: #f92672;">antiResourceLocking</span>=<span style="box-sizing: border-box; color: #e6db74;">"false"</span>          <span style="box-sizing: border-box; color: #f92672;">swallowOutput</span>=<span style="box-sizing: border-box; color: #e6db74;">"true"</span>/&gt;</span></code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">4.配置host</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code nginx"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;"><span style="box-sizing: border-box; color: #66d9ef;">vim</span> /etc/host <span style="box-sizing: border-box; color: #ae81ff;">127.0.0.1</span> testdomain.com</code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">5.重启tomcat<br style="box-sizing: border-box;" />%{CATALINA_HOME}/bin/catalina.sh stop<br style="box-sizing: border-box;" />%{CATALINA_HOME}/bin/catalina.sh start<br style="box-sizing: border-box;" />6.检测是否服务启动正常<br style="box-sizing: border-box;" />访问<a href="https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Ftestdomain%2Fidp%2Fstatus" data-url="https://testdomain/idp/status" style="box-sizing: border-box; background-color: transparent; color: #3366ff; text-decoration-line: none; transition: color 0.2s ease 0s;">https://testdomain/idp/status</a><br style="box-sizing: border-box;" />或者/opt/shibboleth-idp/bin; ./status.sh</p><h4>3.2 配置shibboleth连接ldap</h4><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">编辑修改ldap.properties</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code bash"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;">vim /opt/shibboleth/conf/ldap.properties  idp.authn.LDAP.authenticator = <span style="box-sizing: border-box; color: #e6db74;">bind</span>SearchAuthenticator idp.authn.LDAP.ldapURL = ldap://ldap.example.it:389 idp.authn.LDAP.useStartTLS = <span style="box-sizing: border-box; color: #ae81ff;">false</span> idp.authn.LDAP.useSSL = <span style="box-sizing: border-box; color: #ae81ff;">false</span> idp.authn.LDAP.baseDN = cn=Users,dc=example,dc=org idp.authn.LDAP.userFilter = (uid={user}) idp.authn.LDAP.bindDN = cn=admin,cn=Users,dc=example,dc=org idp.authn.LDAP.bindDNCredential = <span style="box-sizing: border-box; color: #75715e;">###LDAP ADMIN PASSWORD###</span></code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">6.修改shibboleth ldap配置</p><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code cs"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;">vim /opt/shibboleth/conf/services.xml  把 &lt;<span style="box-sizing: border-box; color: #f92672;">value</span>&gt;%{idp.home}/conf/attribute-resolver.xml&lt;/<span style="box-sizing: border-box; color: #f92672;">value</span>&gt; 改为 &lt;<span style="box-sizing: border-box; color: #f92672;">value</span>&gt;%{idp.home}/conf/attribute-resolver-full.xml&lt;/<span style="box-sizing: border-box; color: #f92672;">value</span>&gt;</code></pre><pre style="box-sizing: border-box; overflow: auto; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; padding: 16px; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; color: #f8f8f2; word-break: break-all; overflow-wrap: normal; background-color: #333333; border: 1px solid #cccccc; border-radius: 3px;"><code xml"="" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; font-size: 13.6px; background: transparent; border-radius: 3px; padding: 0px; margin: 0px; display: inline; overflow: visible; word-break: normal; border: 0px; line-height: inherit; overflow-wrap: normal;">vim /opt/shibboleth-idp/conf/attribute-resolver-full.xml  注释掉下列代码，如果已经注释掉了就不动了（有些版本已经注释了）  <span style="box-sizing: border-box; color: #75715e;">&lt;!-- &lt;dc:StartTLSTrustCredential id="LDAPtoIdPCredential" xsi:type="sec:X509ResourceBacked"&gt;   &lt;sec:Certificate&gt;%     {idp.attribute.resolver.LDAP.trustCertificates}&lt;/sec:Certificate&gt;   &lt;/dc:StartTLSTrustCredential&gt; --&gt;</span></code></pre><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">重启tomcat</p><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">7.获取idp metadata.xml<br style="box-sizing: border-box;" /><a href="https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Ftestdomain.com%2Fidp%2Fshibboleth" data-url="https://testdomain.com/idp/shibboleth" style="box-sizing: border-box; background-color: transparent; color: #3366ff; text-decoration-line: none; transition: color 0.2s ease 0s;">https://testdomain.com/idp/shibboleth</a><br style="box-sizing: border-box;" />注意metadata.xml文件中的validUntil属性，如果过期了则修改为未来的某个时间点</p><h3>4.小结</h3><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">至此我们完成了Shibboleth与LDAP集成的安装过程</p><p style="box-sizing: border-box; margin: 0px 0px 16px; padding: 0px;">下篇：&nbsp;<a href="https://yq.aliyun.com/articles/350740?spm=a2c4e.11153940.blogcont350531.14.c4112800h0Jm87" style="box-sizing: border-box; background-color: transparent; color: #3366ff; text-decoration-line: none; transition: color 0.2s ease 0s;">实现Shibboleth+Ldap到阿里云的单点登录<br /><br /><a href="https://yq.aliyun.com/articles/350740?spm=a2c4e.11153940.blogcont350531.14.c4112800h0Jm87" style="background-color: transparent; box-sizing: border-box; color: #3366ff; text-decoration-line: none; transition: color 0.2s ease 0s;">来自</a><span style="color: #24292e;">：</span><a href="https://yq.aliyun.com/articles/350531?tdsourcetag=s_pcqq_aiomsg&amp;do=login&amp;accounttraceid=87b0f203-5d81-4cb7-a986-49615e3962e2&amp;do=login&amp;do=login">https://yq.aliyun.com/articles/350531?tdsourcetag=s_pcqq_aiomsg&amp;do=login&amp;accounttraceid=87b0f203-5d81-4cb7-a986-49615e3962e2&amp;do=login&amp;do=login</a></a></p></div><img src ="http://www.blogjava.net/waterjava/aggbug/435243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2020-03-09 18:20 <a href="http://www.blogjava.net/waterjava/archive/2020/03/09/435243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Shibboleth IDP 的安装和部署配置步骤</title><link>http://www.blogjava.net/waterjava/archive/2020/03/08/435240.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sun, 08 Mar 2020 15:21:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2020/03/08/435240.html</guid><description><![CDATA[<a href="https://blog.csdn.net/wwwcomy/article/details/49098961">https://blog.csdn.net/wwwcomy/article/details/49098961<br /><br /></a><a href="https://www.iteye.com/blog/lhy5201314-1171267">https://www.iteye.com/blog/lhy5201314-1171267</a><img src ="http://www.blogjava.net/waterjava/aggbug/435240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2020-03-08 23:21 <a href="http://www.blogjava.net/waterjava/archive/2020/03/08/435240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat在线人数为0的问题</title><link>http://www.blogjava.net/waterjava/archive/2008/11/28/243156.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 28 Nov 2008 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2008/11/28/243156.html</guid><wfw:comment>http://www.blogjava.net/waterjava/comments/243156.html</wfw:comment><comments>http://www.blogjava.net/waterjava/archive/2008/11/28/243156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/waterjava/comments/commentRss/243156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/waterjava/services/trackbacks/243156.html</trackback:ping><description><![CDATA[在web-inf/web.xml中加入<br />
<br />
&lt;listener&gt; <br />
&nbsp;&lt;listener-class&gt;SessionCount.SessionCounter&lt;/listener-class&gt; <br />
&lt;/listener&gt;<br />
<br />
注册listener即可统计在线人数
<img src ="http://www.blogjava.net/waterjava/aggbug/243156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2008-11-28 10:20 <a href="http://www.blogjava.net/waterjava/archive/2008/11/28/243156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat5.5配置MYSQL数据库连接池</title><link>http://www.blogjava.net/waterjava/archive/2008/04/10/191799.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Thu, 10 Apr 2008 03:05:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2008/04/10/191799.html</guid><wfw:comment>http://www.blogjava.net/waterjava/comments/191799.html</wfw:comment><comments>http://www.blogjava.net/waterjava/archive/2008/04/10/191799.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/waterjava/comments/commentRss/191799.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/waterjava/services/trackbacks/191799.html</trackback:ping><description><![CDATA[<p>1)启动Tomcat服务器，打开浏览器，输入<a href="http://localhost:8080/admin/">http://localhost:8080/admin/</a>（其中localhost是名称服务器或称为主机），<br />
进入管理界面的登陆页面，这时候请输入原来安装时要求输入的用户名和密码，登陆到管理界面，</p>
<p>2)选择Resources－Data sources进入配置数据源界面，选择<br />
&nbsp;Data Source Actions －&gt;选择Create New Data Source,进入配置详细信息界面<br />
主要内容例如下：<br />
JNDI Name: &nbsp; -&gt;jdbc/mysql<br />
Data Source URL&nbsp; -&gt;jdbc:mysql://localhost:3306/db<br />
JDBC Driver Class-&gt; com.mysql.jdbc.Driver</p>
<p>3)修改"conf"context.xml,全部内容如下:<br />
<context>&lt;Context&gt;<br />
&lt;Resource name="jdbc/mysql" <br />
<resource><br="" name="jdbc/mysql" />
&nbsp;auth="Container" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;type="javax.sql.DataSource" <br />
&nbsp;driverClassName="com.mysql.jdbc.Driver" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;url="jdbc:mysql://172.16.0.25/db" <br />
&nbsp;username="root" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;password="root" <br />
&nbsp;maxActive="100" <br />
&nbsp;maxIdle="30" <br />
&nbsp;maxWait="10000" /&gt;<br />
</br="">&lt;/Context&gt;<br />
4)修改web.xml</resource></context></p>
<p>打开%TOMCAT_HOME%"conf"web.xml,在的前面添加以下内容：<br />
&nbsp;&nbsp;&nbsp; &lt;resource-ref&gt;<resource-ref><br />
&nbsp;&nbsp;&nbsp; &lt;description&gt;<description>DB Connection&lt;/description&gt;</description><br />
&nbsp;&nbsp;&nbsp; &lt;res-ref-name&gt;<res-ref-name>jdbc/mysql&lt;/res-ref-name&gt;</res-ref-name><br />
&nbsp;&nbsp;&nbsp; &lt;res-type&gt;<res-type>javax.sql.DataSource&lt;/res-type&gt;</res-type><br />
&nbsp;&nbsp;&nbsp; &lt;res-auth&gt;<res-auth>Container&lt;/res-auth&gt;</res-auth><br />
&nbsp;&nbsp;&nbsp; &lt;/resource-ref&gt;</resource-ref><br />
&nbsp;&nbsp;&nbsp; 注意res-ref-name填写的内容要与在上文提到的JNDI Name名称一致。 <br />
&nbsp;到这里，配置工作就基本完成了!</p>
<p>5)引用JNDI时用"java:comp/env/jdbc/mysql";<br />
有的时候直接应用JNDI名就可以，比如WEBLOGIC8。而TOMCAT就是这么做。</p>
<p>6)JDBC驱动程序mysql-connector-java-5.0.0-beta-bin.jar<br />
一定要放置到%TOMCAT_HOME%"common"lib下。<br />
重启你的Tomcat服务。</p>
<br />
<p>来自: http://zf2000.bokee.com/5421704.html (有删减)<br />
</p>
<img src ="http://www.blogjava.net/waterjava/aggbug/191799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2008-04-10 11:05 <a href="http://www.blogjava.net/waterjava/archive/2008/04/10/191799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat中的几点配置说明 </title><link>http://www.blogjava.net/waterjava/archive/2007/10/08/151073.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Mon, 08 Oct 2007 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2007/10/08/151073.html</guid><wfw:comment>http://www.blogjava.net/waterjava/comments/151073.html</wfw:comment><comments>http://www.blogjava.net/waterjava/archive/2007/10/08/151073.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/waterjava/comments/commentRss/151073.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/waterjava/services/trackbacks/151073.html</trackback:ping><description><![CDATA[<font class="f14" id="zoom"><strong>1. 如何加大tomcat连接数</strong><br />
<p style="line-height: 150%">在tomcat配置文件server.xml中的&lt;Connector ... /&gt;配置中，和连接数相关的参数有：<br />
minProcessors：最小空闲连接线程数，用于提高系统处理性能，默认值为10<br />
maxProcessors：最大连接线程数，即：并发处理的最大请求数，默认值为75<br />
acceptCount：允许的最大连接数，应大于等于maxProcessors，默认值为100<br />
enableLookups：是否反查域名，取值为：true或false。为了提高处理能力，应设置为false<br />
connectionTimeout：网络连接超时，单位：毫秒。设置为0表示永不超时，这样设置有隐患的。通常可设置为30000毫秒。<br />
<br />
其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数，应同时加大这两个参数。<br />
</p>
<p style="line-height: 150%">web server允许的最大连接数还受制于操作系统的内核参数设置，通常Windows是2000个左右，Linux是1000个左右。Unix中如何设置这些参数，请参阅<a href="http://www.ee2ee.com/tech_art/2/30.html" target="_blank">Unix常用监控和管理命令</a> </p>
tomcat4中的配置示例：<br />
&lt;Connector className="org.apache.coyote.tomcat4.CoyoteConnector"<br />
port="8080" minProcessors="10" maxProcessors="1024"<br />
enableLookups="false" redirectPort="8443"<br />
acceptCount="1024" debug="0" connectionTimeout="30000" /&gt; <br />
<br />
对于其他端口的侦听配置，以此类推。<br />
<br />
<strong>2. tomcat中如何禁止列目录下的文件</strong><br />
在{tomcat_home}/conf/web.xml中，把listings参数设置成false即可，如下：<br />
&lt;servlet&gt;<br />
...<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;listings&lt;/param-name&gt;<br />
&lt;param-value&gt;false&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
...<br />
&lt;/servlet&gt; <br />
<br />
<strong>3. 如何加大tomcat可以使用的内存</strong><br />
<p style="line-height: 150%">tomcat默认可以使用的内存为128MB，在较大型的应用项目中，这点内存是不够的，需要调大。<br />
<br />
Unix下，在文件{tomcat_home}/bin/catalina.sh的前面，增加如下设置：<br />
JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'<br />
需要把这个两个参数值调大。例如：<br />
JAVA_OPTS='-Xms256m -Xmx512m'<br />
表示初始化内存为256MB，可以使用的最大内存为512MB <br />
<br />
4. 设置主页根目录<br />
&lt;Context&nbsp; path=""&nbsp; docBase="C:\myApp"&nbsp; debug="0"&nbsp; reloadable="true"&gt;&lt;/Context&gt;&nbsp; <br />
<br />
<br />
<br />
<br />
来自:http://www.cnblogs.com/midnight/archive/2004/11/04/60398.html</font></p>
<img src ="http://www.blogjava.net/waterjava/aggbug/151073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2007-10-08 15:14 <a href="http://www.blogjava.net/waterjava/archive/2007/10/08/151073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat: Error filterStart解决办法</title><link>http://www.blogjava.net/waterjava/archive/2007/09/21/147128.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 21 Sep 2007 07:39:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2007/09/21/147128.html</guid><wfw:comment>http://www.blogjava.net/waterjava/comments/147128.html</wfw:comment><comments>http://www.blogjava.net/waterjava/archive/2007/09/21/147128.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/waterjava/comments/commentRss/147128.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/waterjava/services/trackbacks/147128.html</trackback:ping><description><![CDATA[现状：<br />
<br />
把filter\SetCharacterEncodingFilter.class放在web-inf\classes目录<br />
<br />
在web.xml中添加<br />
<br />
<p>&nbsp;&nbsp;&nbsp; &lt;welcome-file-list&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/welcome-file-list&gt;<br />
&nbsp;<br />
&nbsp;&nbsp;&lt;filter&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;filter-class&gt;filters.SetCharacterEncodingFilter&lt;/filter-class&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;encoding&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;GBK&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/init-param&gt;<br />
&nbsp;&nbsp;&lt;/filter&gt;</p>
<p>&nbsp;&nbsp;&lt;filter-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&lt;/filter-mapping&gt;</p>
<br />
后，启动tomcat5.0.28，出现<br />
<br />
2007-3-13 17:43:46 org.apache.catalina.core.StandardContext start<br />
严重: Error filterStart<br />
2007-3-13 17:43:46 org.apache.catalina.core.StandardContext start<br />
严重: Context startup failed due to previous errors<br />
<br />
<br />
<br />
解决办法：<br />
<br />
c:\&gt; cd 主页目录\web-inf\classes<br />
<br />
c:\&gt; jar cvf&nbsp;&nbsp; filters.jar&nbsp;&nbsp; filters<br />
<br />
形成filters.jar文件，把它放在 tomcat\common\lib下，重新启动tomcat，问题解决！<br />
<br />
<br />
<img src ="http://www.blogjava.net/waterjava/aggbug/147128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2007-09-21 15:39 <a href="http://www.blogjava.net/waterjava/archive/2007/09/21/147128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp中文问题最终解决方案</title><link>http://www.blogjava.net/waterjava/archive/2007/09/20/146706.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Thu, 20 Sep 2007 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2007/09/20/146706.html</guid><wfw:comment>http://www.blogjava.net/waterjava/comments/146706.html</wfw:comment><comments>http://www.blogjava.net/waterjava/archive/2007/09/20/146706.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/waterjava/comments/commentRss/146706.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/waterjava/services/trackbacks/146706.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">综合了网上众多方案后,最终从工具选项设置到编码解决全部解决.感谢网上众多分享者的无私.</p>
<p style="text-indent: 2em">1）保持这2句的字符编码一致:</p>
<p style="text-indent: 2em">&nbsp;&lt;%@ page contentType="text/html;charset=UTF-8" language="java"%&gt;</p>
<p style="text-indent: 2em">&lt;%@ page language="java" import="java.util.*,hy.*" pageEncoding="UTF-8"%&gt;</p>
<p style="text-indent: 2em"><a href="http://www.cnblogs.com/jackielin/archive/2006/11/05/550422.html"></a>&nbsp;</p>
<p style="text-indent: 2em">2）数据库</p>
<p style="text-indent: 2em">在写JSP时,里面面有涉及到数据库操作,当保存时就会弹出</p>
<p style="text-indent: 2em">save could not be completed</p>
<p style="text-indent: 2em">原因是some characters could not be mapped using iso8859-1</p>
<p style="text-indent: 2em">&lt;%@ page language="java" pageEncoding="GBK"%&gt;</p>
<p style="text-indent: 2em">设成GBK或UTF－8就可以了，只要他里面的支持中文就ok了</p>
<p style="text-indent: 2em">3）eclipse设置</p>
<p style="text-indent: 2em">用eclipse 编写jsp页面或<a href="http://blog.csdn.net/dongliheng/archive/2007/07/07/www.chinajavaworld.com">java</a>类的时候,直接在页面里输入汉字，保存的时候出现"字符不能匹配ISO-8859-1"的错误提示，因为ISO-8859-1是 英文编码，不能识别汉字，我就想把它改为utf-8,可是我找不到能改变编码的地方，首先我打开工程的属性，在"info"里看到"Text file encoding"就世界把它改为utf-8，可是还是出现错误提示，搞了好半天还是搞不定它，就在网上找找看有没人遇到过这样的问题。对这个问题解答比 较多的是在"edit"---"set encoding"(好像这个是为单独的文件临时设置编码),可是我在eclipse里没找到(我用的是3.2，不知道是不是这个原因)，后来又找到一个 解释：设置默认编码：</p>
<p style="text-indent: 2em">window--&gt;preferences--&gt;general--&gt;editor--&gt;text file encoding，</p>
<p style="text-indent: 2em">我打开perferences还是没有找到，狂晕~~~~~~~~~，</p>
<p style="text-indent: 2em">接着看看别的地方有没有设置编码的地方，</p>
<p style="text-indent: 2em">还是没有找到..........</p>
<p style="text-indent: 2em">&nbsp;又回到perferences，觉得还是在这里可以解决，呵呵，问题还是出在这里，</p>
<p style="text-indent: 2em">我找到"General"--"Content Types"，</p>
<p style="text-indent: 2em">右边有个树形的text，</p>
<p style="text-indent: 2em">展开找到"JSP",开始没发现，</p>
<p style="text-indent: 2em">那家伙躲在最低下...........，</p>
<p style="text-indent: 2em">大家不要像我粗心，</p>
<p style="text-indent: 2em">最低下有个"Default encoding"，</p>
<p style="text-indent: 2em">里面默认的是"ISO-8859-1",</p>
<p style="text-indent: 2em">终于找到了，</p>
<p style="text-indent: 2em">删掉"ISO-8859-1"填上"UTF-8"，</p>
<p style="text-indent: 2em">在点一下"update"，</p>
<p style="text-indent: 2em">OK。再保存，</p>
<p style="text-indent: 2em">就没有错误了..............</p>
<p style="text-indent: 2em">4）tomcat中设置server.xml</p>
<p style="text-indent: 2em">&lt;Connector</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; port="8080"&nbsp;maxHttpHeaderSize="8192"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxThreads="150" minSpareThreads="25" maxSpareThreads="75"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLookups="false" redirectPort="8443" acceptCount="100"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionTimeout="20000" disableUploadTimeout="true"&nbsp;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URIEncoding="GBK" useBodyEncodingForURI="true" /&gt;</p>
<p style="text-indent: 2em">4）tomcat设置数据库数据源</p>
<p style="text-indent: 2em">&lt;Context path="/roller" docBase="E:\MyWorks\Websites\4.5K\server\apache-tomcat\webapps\roller" debug="0"&gt;</p>
<p style="text-indent: 2em">&nbsp; &lt;Resource auth="Container" </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="javax.sql.DataSource"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; driverClassName="com.mysql.jdbc.Driver"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; url="jdbc:mysql://localhost:3306/test?autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf-8&amp;amp;mysqlEncoding=utf8"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; username="root"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; password=""</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; maxActive="20"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; maxIdle="3"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; removeAbandoned="true"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; maxWait="3000" /&gt;</p>
<p style="text-indent: 2em">&nbsp; &lt;!-- If you want e-mail features, un-comment the section below --&gt;</p>
<p style="text-indent: 2em">&nbsp; &lt;!--</p>
<p style="text-indent: 2em">&nbsp; &lt;Resource auth="Container" </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp; type="javax.mail.Session"</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp; mail.smtp.host="mailhost.example.com" /&gt;</p>
<p style="text-indent: 2em">&nbsp; --&gt;</p>
<p style="text-indent: 2em">&lt;/Context&gt;</p>
<p style="text-indent: 2em">5）提交表单</p>
<p style="text-indent: 2em">1 表单提交的数据，用request.getParameter(&#8220;xxx&#8221;)返回的字符串为乱码或者？？</p>
<p style="text-indent: 2em">2 直接通过url如http://localhost/a.jsp?name=中国，这样的get请求在服务端用request. getParameter(&#8220;name&#8221;)时返回的是乱码；按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用</p>
<p style="text-indent: 2em">原因：</p>
<p style="text-indent: 2em">1 tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理</p>
<p style="text-indent: 2em">2 tomcat对get方式提交的请求对query-string 处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding(&#8220;gbk&#8221;))不起作用。</p>
<p style="text-indent: 2em">解决办法：</p>
<p style="text-indent: 2em">首先所有的jsp文件都加上:</p>
<p style="text-indent: 2em">1 实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。) </p>
<p style="text-indent: 2em">1)只要把%TOMCAT安装目录%/ webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下，如果没有filters目录，就创建一个。</p>
<p style="text-indent: 2em">2)在你的web.xml里加入如下几行：</p>
<p style="text-indent: 2em">&nbsp;&lt;filter&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;filter-class&gt;filters.SetCharacterEncodingFilter&lt;/filter-class&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;init-param&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;param-name&gt;encoding&lt;/param-name&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;param-value&gt;GBK&lt;/param-value&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;/init-param&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;/filter&gt;</p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em">&nbsp;&lt;filter-mapping&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;/filter-mapping&gt;</p>
<p style="text-indent: 2em">3)完成.</p>
<p style="text-indent: 2em">2 get方式的解决办法</p>
<p style="text-indent: 2em">1) 打开tomcat的server.xml文件，找到区块，加入如下一行：</p>
<p style="text-indent: 2em">URIEncoding=&#8221;GBK&#8221;</p>
<p style="text-indent: 2em">完整的应如下：</p>
<p style="text-indent: 2em">&lt;Connector </p>
<p style="text-indent: 2em">port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"</p>
<p style="text-indent: 2em">&nbsp;enableLookups="false" redirectPort="8443" acceptCount="100"</p>
<p style="text-indent: 2em">&nbsp;debug="0" connectionTimeout="20000" </p>
<p style="text-indent: 2em">&nbsp;disableUploadTimeout="true" </p>
<p style="text-indent: 2em">&nbsp;URIEncoding="GBK"</p>
<p style="text-indent: 2em">/&gt;</p>
<p style="text-indent: 2em">2)重启tomcat,一切OK。</p>
<p style="text-indent: 2em">执行如下jsp页页测试是否成功</p>
<p style="text-indent: 2em">&lt;%@ page contentType="text/html;charset=gb2312"%&gt;</p>
<p style="text-indent: 2em">&lt;%@ page import="java.util.*"%&gt;</p>
<p style="text-indent: 2em">&lt;% </p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em">&nbsp;String q=request.getParameter("q"); </p>
<p style="text-indent: 2em">&nbsp;q = q == null? "没有值" : q;</p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em">%&gt;</p>
<p style="text-indent: 2em">&lt;HTML&gt;</p>
<p style="text-indent: 2em">&lt;HEAD&gt;&lt;TITLE&gt;新闻列表显示&lt;/TITLE&gt;</p>
<p style="text-indent: 2em">&lt;META http-equiv=Content-Type content="text/html; charset=gb2312"&gt;</p>
<p style="text-indent: 2em">&lt;META http-equiv=pragma content=no-cache&gt;</p>
<p style="text-indent: 2em">&lt;body&gt;</p>
<p style="text-indent: 2em">你提交了：</p>
<p style="text-indent: 2em">&lt;%=q%&gt;</p>
<p style="text-indent: 2em">&lt;br&gt;</p>
<p style="text-indent: 2em">&lt;form action="tcnchar.jsp" method="post"&gt;</p>
<p style="text-indent: 2em">&nbsp;输入中文:&lt;input type="text" &gt;&lt;input type="submit" value="确定"&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;br&gt;</p>
<p style="text-indent: 2em">&nbsp;&lt;a href="tcnchar.jsp?q=中国"&gt;通过get方式提交&lt;/a&gt;</p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em">&lt;/form&gt;</p>
<p style="text-indent: 2em">&lt;/BODY&gt;&lt;/HTML&gt;</p>
<p style="text-indent: 2em">测试结果如果你输入文本框或者点超链都会显示:你提交了&#8221;中国&#8221;,说明成功!!!!!</p>
<p style="text-indent: 2em">6）　一不小心看到一个非常好的办法，可以让我们不必写</p>
<p style="text-indent: 2em">new String(st.getBytes("ISO8859_1"),"GBK")</p>
<p style="text-indent: 2em">。</p>
<p style="text-indent: 2em">详细如下</p>
<p style="text-indent: 2em">只要修改一个地方就行了，文件为: tomcat4/src/catalina/src/share/org/apache/catalina/connector/HttpReque stBase.java
<table cellspacing="0" cellpadding="0" align="right" border="0">
    <tbody>
        <tr>
            <td>
            <p>&nbsp;</p>
            <p style="text-indent: 2em">&nbsp;</p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p style="text-indent: 2em">找到protected void parseParameters()方法，把</p>
<p style="text-indent: 2em">if (encoding == null) encoding = "ISO-8859-1"; </p>
<p style="text-indent: 2em">改为 </p>
<p style="text-indent: 2em">if (encoding == null) encoding = "GBK"; </p>
<p style="text-indent: 2em">然后编译</p>
<p style="text-indent: 2em">javac HttpRequestBase.java生成两个class文件.再然后用jar命令把它打包成原来的catalina.jar，覆盖原来的，最后重新启动tomcat就可以。</p>
<img src ="http://www.blogjava.net/waterjava/aggbug/146706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2007-09-20 10:56 <a href="http://www.blogjava.net/waterjava/archive/2007/09/20/146706.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu安装TomCat</title><link>http://www.blogjava.net/waterjava/archive/2007/07/20/131399.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 20 Jul 2007 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2007/07/20/131399.html</guid><wfw:comment>http://www.blogjava.net/waterjava/comments/131399.html</wfw:comment><comments>http://www.blogjava.net/waterjava/archive/2007/07/20/131399.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/waterjava/comments/commentRss/131399.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/waterjava/services/trackbacks/131399.html</trackback:ping><description><![CDATA[ 1、首先要确保安装相关的软件 <br><br> 安装JAVA环境<br>  打开终端，执行以下命令，或使用《新立得软件管理器》，在其中分别搜索&#8220;sun-java5-jre&#8220;和&#8220;sun-java5-jdk&#8221;并标记安装。<br>  sudo apt-get install sun-java5-jre<br>  # 如果空间富裕，建议安装一个JDK。呵呵<br>  sudo apt-get install sun-java5-jdk<br>  设置当前默认的java解释器<br>  sudo update-alternatives &#8211;config java<br>  执行后会出现类似如下的画面:<br>  There are 4 alternatives which provide `java&#8217;.<br>  <br>  Selection&nbsp;&nbsp;&nbsp;  Alternative<br>  ———————————————&#8211;<br>  1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /usr/lib/jvm/java-gcj/jre/bin/java<br>  2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /usr/bin/gij-wrapper-4.1<br>  3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /usr/bin/gij-wrapper-4.0<br>  4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /usr/lib/jvm/java-1.5.0-sun/jre/bin/java<br>  Press enter to keep the default<br>  <br>  or type selection number:<br>  <br>  输入 有包含 &#8220;sun&#8221; 的行的前面的数字。如上面显示，则输入 4，然后回车确定。<br><br> 2、下载tomcat <br> $wget <a href="http://apache.freelamp.com/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9.tar.gz" target="_blank">http://apache.freelamp.com/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9.tar.gz</a> <br>我的tomcat是从 http://tomcat.apache.org/download-55.cgi这里下载的core.当然下面的文件名也要做相应的修改.<br> 3、解压tomcat <br> $sudo tar zxvf jakarta-tomcat-5.5.9.tar.gz -C /opt <br> $sudo mv /opt/jakarta-tomcat-5.5.9 /opt/tomcat <br> 4、确保在/etc/environment文件中有：（这一步不是很确定是否需要） <br> &gt;CLASSPATH=/usr/lib/j2sdk1.5-sun/lib <br> &gt;JAVA_HOME=/usr/lib/j2sdk1.5-sun <br> 5、启动tomcat <br> $sudo /opt/tomcat/bin/startup.sh <br> 如果能看到下列提示，就表明启动成功了！ <br> &gt;Using CATALINA_BASE:   /opt/tomcat <br> &gt;Using CATALINA_HOME:   /opt/tomcat <br> &gt;Using CATALINA_TMPDIR: /opt/tomcat/temp <br> &gt;Using JRE_HOME:       /usr/lib/j2sdk1.5-sun <br> 6、测试：打开Firefox，在地址栏中输入http://localhost:8080，如果出来Tomcat的缺省界面，说明测试通过！ <br> 7、停止Tomcat服务 <br> $sudo /opt/tomcat/bin/shutdown.sh <br>
8、获得MySQL的JDBC，在Firefox浏览器的地址栏中输入http:
//dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-3.1.10.tar.gz/from/http:
//mysql.cbn.net.id/以得到该软件。 <br> 9、安装JDBC <br> $tar -zxvf mysql-connector-java-3.1.10.tar.gz <br> $sudo cp mysql-connector-java-3.1.10/mysql-connector-java-3.1.10-bin*.jar /usr/lib/j2sdk1.5-sun/lib<br><br> 配置Tomcat的端口<br> <br> Ubuntu自带的Tomcat打开的是8180端口，既不符合常规，也不利于使用。我们可以做一些简单的修改，让Tomcat使用其他的端口进行服务。在Terminal中，输入<br> sudo gedit /usr/share/tomcat5/conf/server.xml<br> <br> 在配置文件中查找<br> &lt;Connector className="org.apache.coyote.tomcat5.CoyoteConnector"  port="8180"<br> <br> 并把其中的8180替换成需要的端口。一般情况下，可以替换成80或者是8080。如果设置成80，那么在浏览器中直接输入http://localhost就可以访问到Tomcat的页面。 重新启动Tomcat生效。<br> <br> 设置Tomcat管理员帐号<br> <br> Tomcat的用户帐号信息都保存在tomcat-users.xml的文件中，运行<br> sudo gedit /usr/share/tomcat5/conf/tomcat-users.xml<br> <br> 在&lt;/tomcat-users&gt;的标签前添加一行<br> &lt;user username="用户名" password="密码" roles="admin,manager"/&gt;<br> <br> 保存并关闭。重新运行tomcat即可输入该用户名和密码，登录Tomcat的管理页面。<br> <br> 安装最新版本的Tomcat<br> <br> 我们接下来介绍直接从Apache Tomcat的主页上下载并使用最新版本5.5.17的Tomcat软件，该方法方便快捷而且并不影响系统的稳定性。<br> <br> 从tomcat的官方下载页面http://tomcat.apache.org/download-55.cgi<br> <br> 下载Binary-&gt;Core分类中的zip或者tar.gz包后，本地解压缩并将新生成的目录重命名为tomcat，以方便使用。将这个文件夹移动至某路径PATH/。 参考以上设置环境变量和端口设置等步骤，大功告成！ 直接运行<br><br><br>PS,开始的时候用apt-get安装tomcat5.5,总是出现无法安装成功,在shutdown时,出来java异常,最后实在没有办法了,用<br>sudo apt-get remove tomcat5.5<br>把它给卸载了.重新下载安装,不用apt-get<br><br>traceback:http://blog.csdn.net/aqua_aqua/archive/2007/05/18/1614485.aspx<br>
<br><img src ="http://www.blogjava.net/waterjava/aggbug/131399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2007-07-20 09:16 <a href="http://www.blogjava.net/waterjava/archive/2007/07/20/131399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat配置技巧Top10</title><link>http://www.blogjava.net/waterjava/archive/2007/07/10/129263.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Tue, 10 Jul 2007 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2007/07/10/129263.html</guid><wfw:comment>http://www.blogjava.net/waterjava/comments/129263.html</wfw:comment><comments>http://www.blogjava.net/waterjava/archive/2007/07/10/129263.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/waterjava/comments/commentRss/129263.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/waterjava/services/trackbacks/129263.html</trackback:ping><description><![CDATA[<p><strong>1、配置系统管理（Admin Web Application）</strong> </p>
<p>大多数商业化的J2EE服务器都提供一个功能强大的管理界面，且大都采用易于理解的Web应用界面。Tomcat按照自己的方式，同样提供一个成熟的管理工具，并且丝毫不逊于那些商业化的竞争对手。Tomcat的Admin Web Application最初在4.1版本时出现，当时的功能包括管理context、data source、user和group等。当然也可以管理像初始化参数，user、group、role的多种数据库管理等。在后续的版本中，这些功能将得到很大的扩展，但现有的功能已经非常实用了。Admin Web Application被定义在自动部署文件：CATALINA_BASE/webapps/admin.xml 。（译者注：CATALINA_BASE即tomcat安装目录下的server目录）</p>
<p>你必须编辑这个文件，以确定Context中的docBase参数是绝对路径。也就是说，CATALINA</p>
<p>_BASE/webapps/admin.xml的路径是绝对路径。作为另外一种选择，你也可以删除这个自动部署文件，而在server.xml文件中建立一个Admin Web Application的context，效果是一样的。你不能管理Admin Web Application这个应用，换而言之，除了删除CATALINA_BASE/webapps/admin.xml ，你可能什么都做不了。</p>
<p>如果你使用UserDatabaseRealm（默认），你将需要添加一个user以及一个role到CATALINA_BASE/conf/tomcat-users.xml文件中。你编辑这个文件，添加一个名叫&#8220;admin&#8221;的role 到该文件中，如下：</p>
<p><span class=code>&lt;role name="admin"/&gt;</span></p>
<p>同样需要有一个用户，并且这个用户的角色是&#8220;admin&#8221;。象存在的用户那样，添加一个用户（改变密码使其更加安全）：</p>
<p><span class=code>&lt;ser name="admin"<br>password="deep_dark_secret"<br>roles="admin"/&gt;<br></span><user password="deep_dark_secret" name="admin" roles="admin"></p>
<p>你完成这些步骤后，请重新启动Tomcat，访问http://localhost:8080/admin，你将看到一个登录界面。Admin Web Application采用基于容器管理的安全机制，并采用了Jakarta Struts框架。一旦你作为&#8220;admin&#8221;角色的用户登录管理界面，你将能够使用这个管理界面配置Tomcat。</p>
<p><strong>2、配置应用管理（Manager Web Application）</strong></p>
<p>Manager Web Application让你通过一个比Admin Web Application更为简单的用户界面，执行一些简单的Web应用任务。Manager Web Application被被定义在一个自动部署文件中：</p>
<p>&nbsp;<span class=code>CATALINA_BASE/webapps/manager.xml</span></p>
<p>你必须编辑这个文件，以确保context的docBase参数是绝对路径，也就是说CATALINA_HOME/server/webapps/manager的绝对路径。（译者注：CATALINA_HOME即tomcat安装目录）</p>
<p>如果你使用的是UserDatabaseRealm，那么你需要添加一个角色和一个用户到CATALINA_BASE/conf/tomcat-users.xml文件中。接下来，编辑这个文件，添加一个名为&#8220;manager&#8221;的角色到该文件中：</p>
<p><span class=code>&lt;role name=&#8221;manager&#8221;&gt;</span></p>
<p>同样需要有一个角色为&#8220;manager&#8221;的用户。像已经存在的用户那样，添加一个新用户（改变密码使其更加安全）：</p>
<p><span class=code>&lt;user name="manager"<br>password="deep_dark_secret"<br>roles="manager"/&gt;</span></p>
<p>然后重新启动Tomcat，访问http://localhost/manager/list，将看到一个很朴素的文本型管理界面，或者访问http://localhost/manager/html/list，将看到一个HMTL的管理界面。不管是哪种方式都说明你的Manager Web Application现在已经启动了。</p>
<p>Manager application让你可以在没有系统管理特权的基础上，安装新的Web应用，以用于测试。如果我们有一个新的web应用位于/home/user/hello下在，并且想把它安装到/hello下，为了测试这个应用，我们可以这么做，在第一个文件框中输入&#8220;/hello&#8221;（作为访问时的path），在第二个文本框中输入&#8220;file:/home/user/hello&#8221;（作为Config URL）。</p>
<p>Manager application还允许你停止、重新启动、移除以及重新部署一个web应用。停止一个应用使其无法被访问，当有用户尝试访问这个被停止的应用时，将看到一个503的错误??&#8220;503 - This application is not currently available&#8221;。</p>
<p>移除一个web应用，只是指从Tomcat的运行拷贝中删除了该应用，如果你重新启动Tomcat，被删除的应用将再次出现（也就是说，移除并不是指从硬盘上删除）。&nbsp;</p>
<p><strong>3、部署一个web应用</strong></p>
<p>有两个办法可以在系统中部署web服务。</p>
<p>1. 拷贝你的WAR文件或者你的web应用文件夹（包括该web的所有内容）到$CATALINA_BASE/webapps目录下。</p>
<p>2. 为你的web服务建立一个只包括context内容的XML片断文件，并把该文件放到$CATALINA_BASE/webapps目录下。这个web应用本身可以存储在硬盘上的任何地方。</p>
<p>如果你有一个WAR文件，你若想部署它，则只需要把该文件简单的拷贝到CATALINA_BASE/webapps目录下即可，文件必须以&#8220;.war&#8221;作为扩展名。一旦Tomcat监听到这个文件，它将（缺省的）解开该文件包作为一个子目录，并以WAR文件的文件名作为子目录的名字。</p>
<p>接下来，Tomcat将在内存中建立一个context，就好象你在server.xml文件里建立一样。当然，其他必需的内容，将从server.xml中的DefaultContext获得。</p>
<p>部署web应用的另一种方式是写一个Context XML片断文件，然后把该文件拷贝到CATALINA_BASE/webapps目录下。一个Context片断并非一个完整的XML文件，而只是一个context元素，以及对该应用的相应描述。</p>
<p>这种片断文件就像是从server.xml中切取出来的context元素一样，所以这种片断被命名为&#8220;context片断&#8221;。</p>
<p>举个例子，如果我们想部署一个名叫MyWebApp.war的应用，该应用使用realm作为访问控制方式，我们可以使用下面这个片断：</p>
<p><span class=code>&lt;!--<br>Context fragment for deploying MyWebApp.war<br>--&gt;<br>&lt;Context path="/demo"<br>docBase="webapps/MyWebApp.war"<br>debug="0" privileged="true"&gt;<br>&lt;Realm className=<br>"org.apache.catalina.realm.UserDatabaseRealm"<br>resourceName="UserDatabase"/&gt;<br>&lt;/Context&gt;</span></p>
<p>把该片断命名为&#8220;MyWebApp.xml&#8221;，然后拷贝到CATALINA_BASE/webapps目录下。</p>
<p>这种context片断提供了一种便利的方法来部署web应用，你不需要编辑server.xml，除非你想改变缺省的部署特性，安装一个新的web应用时不需要重启动Tomcat。</p>
<p><strong>4、配置虚拟主机（Virtual Hosts</strong>）</p>
<p>关于server.xml中&#8220;Host&#8221;这个元素，只有在你设置虚拟主机的才需要修改。虚拟主机是一种在一个web服务器上服务多个域名的机制，对每个域名而言，都好象独享了整个主机。实际上，大多数的小型商务网站都是采用虚拟主机实现的，这主要是因为虚拟主机能直接连接到Internet并提供相应的带宽，以保障合理的访问响应速度，另外虚拟主机还能提供一个稳定的固定IP。</p>
<p>基于名字的虚拟主机可以被建立在任何web服务器上，建立的方法就是通过在域名服务器（DNS）上建立IP地址的别名，并且告诉web服务器把去往不同域名的请求分发到相应的网页目录。因为这篇文章主要是讲Tomcat，我们不准备介绍在各种操作系统上设置DNS的方法，如果你在这方面需要帮助，请参考《DNS and Bind》一书，作者是Paul Albitz and Cricket Liu (O'Reilly)。为了示范方便，我将使用一个静态的主机文件，因为这是测试别名最简单的方法。</p>
<p>在Tomcat中使用虚拟主机，你需要设置DNS或主机数据。为了测试，为本地IP设置一个IP别名就足够了，接下来，你需要在server.xml中添加几行内容，如下：</p>
<p>&#160;</p>
<span class=code>
<p>&lt;Server port="8005"<br>shutdown="SHUTDOWN" debug="0"&gt;<br>&lt;Service name="Tomcat-Standalone"&gt;<br>&lt;Connector className=<br>"org.apache.coyote.tomcat4.CoyoteConnector"<br>port="8080"<br>minProcessors="5" maxProcessors="75"<br>enableLookups="true"<br>redirectPort="8443"/&gt;<br>&lt;Connector className=<br>"org.apache.coyote.tomcat4.CoyoteConnector"<br>port="8443" minProcessors="5"<br>maxProcessors="75"<br>acceptCount="10" debug="0"<br>scheme="https" secure="true"/&gt;<br>&lt;Factory className="org.apache.coyote.<br>tomcat4.CoyoteServerSocketFactory"<br>clientAuth="false" protocol="TLS" /&gt;<br>&lt;/Connector&gt;<br>&lt;Engine name="Standalone"<br>defaultHost="localhost" debug="0"&gt;<br>&lt;!-- This Host is the default Host --&gt;<br>&lt;Host name="localhost"<br>debug="0" appBase="webapps"<br>unpackWARs="true" autoDeploy="true"&gt;<br>&lt;Context path="" docBase="ROOT" debug="0"/&gt;<br>&lt;Context path="/orders"<br>docBase="/home/ian/orders" debug="0"<br>reloadable="true" crossContext="true"&gt;<br>&lt;/Context&gt;<br>&lt;/Host&gt;<br><br>&lt;!-- This Host is the first<br>"Virtual Host": http://www.example.com/ --&gt;<br>&lt;Host name="www.example.com"<br>appBase="/home/example/webapp"&gt;<br>&lt;Context path="" docBase="."/&gt;<br>&lt;/Host&gt;<br><br>&lt;/Engine&gt;<br>&lt;/Service&gt;<br>&lt;/Server&gt;</p>
<p>&#160;</p>
</span>
<p>Tomcat的server.xml文件，在初始状态下，只包括一个虚拟主机，但是它容易被扩充到支持多个虚拟主机。在前面的例子中展示的是一个简单的server.xml版本，其中粗体部分就是用于添加一个虚拟主机。每一个Host元素必须包括一个或多个context元素，所包含的context元素中必须有一个是默认的context，这个默认的context的显示路径应该为空（例如，path=&#8221;&#8221;）。</p>
<p><strong>5、配置基础验证（Basic Authentication）</strong></p>
<p>容器管理验证方法控制着当用户访问受保护的web应用资源时，如何进行用户的身份鉴别。当一个web应用使用了Basic Authentication（BASIC参数在web.xml文件中auto-method元素中设置），而有用户访问受保护的web应用时，Tomcat将通过HTTP Basic Authentication方式，弹出一个对话框，要求用户输入用户名和密码。在这种验证方法中，所有密码将被以64位的编码方式在网络上传输。</p>
<p>注意：使用Basic Authentication通过被认为是不安全的，因为它没有强健的加密方法，除非在客户端和服务器端都使用HTTPS或者其他密码加密码方式（比如，在一个虚拟私人网络中）。若没有额外的加密方法，网络管理员将能够截获（或滥用）用户的密码。</p>
<p>但是，如果你是刚开始使用Tomcat，或者你想在你的web应用中测试一下基于容器的安全管理，Basic Authentication还是非常易于设置和使用的。只需要添加<security-constraint> 和<login-config> 两个元素到你的web应用的web.xml文件中，并且在CATALINA_BASE/conf/tomcat-users.xml文件中添加适当的<role> 和<user> 即可，然后重新启动Tomcat。</p>
<p>下面例子中的web.xml摘自一个俱乐部会员网站系统，该系统中只有member目录被保护起来，并使用Basic Authentication进行身份验证。请注意，这种方式将有效的代替Apache web服务器中的.htaccess文件。</p>
<p><span class=code>&lt;!--<br>Define the<br>Members-only area,<br>by defining<br>a "Security Constraint"<br>on this Application, and<br>mapping it to the<br>subdirectory (URL) that we want<br>to restrict.<br>--&gt;<br>&lt;security-constraint&gt;<br>&lt;web-resource-collection&gt;<br>&lt;web-resource-name&gt;<br>Entire Application<br>&lt;/web-resource-name&gt;<br>&lt;url-pattern&gt;/members/*&lt;/url-pattern&gt;<br>&lt;/web-resource-collection&gt;<br>&lt;auth-constraint&gt;<br>&lt;role-name&gt;member<strong>&lt;/</strong>role-name&gt;<br>&lt;/auth-constraint&gt;<br>&lt;/security-constraint&gt;<br>&lt;!-- Define the Login<br>Configuration for<br>this Application --&gt;<br>&lt;login-config&gt;<br>&lt;auth-method&gt;BASIC&lt;/auth-method&gt;<br>&lt;realm-name&gt;My Club<br>Members-only Area&lt;/realm-name&gt;<br>&lt;/login-config&gt;</span></p>
<p><strong>6、配置单点登录（Single Sign-On）</strong></p>
<p>一旦你设置了realm和验证的方法，你就需要进行实际的用户登录处理。一般说来，对用户而言登录系统是一件很麻烦的事情，你必须尽量减少用户登录验证的次数。作为缺省的情况，当用户第一次请求受保护的资源时，每一个web应用都会要求用户登录。</p>
<p>如果你运行了多个web应用，并且每个应用都需要进行单独的用户验证，那这看起来就有点像你在与你的用户搏斗。用户们不知道怎样才能把多个分离的应用整合成一个单独的系统，所有他们也就不知道他们需要访问多少个不同的应用，只是很迷惑，为什么总要不停的登录。</p>
<p>Tomcat 4的&#8220;single sign-on&#8221;特性允许用户在访问同一虚拟主机下所有web应用时，只需登录一次。为了使用这个功能，你只需要在Host上添加一个SingleSignOn Valve元素即可，如下所示：</p>
<p><span class=code>&lt;Valve className=<br>"org.apache.catalina.<br>authenticator.SingleSignOn"<br>debug="0"/&gt;</span></p>
<p>在Tomcat初始安装后，server.xml的注释里面包括SingleSignOn Valve配置的例子，你只需要去掉注释，即可使用。那么，任何用户只要登录过一个应用，则对于同一虚拟主机下的所有应用同样有效。使用single sign-on valve有一些重要的限制：</p>
<p>1&gt; value必须被配置和嵌套在相同的Host元素里，并且所有需要进行单点验证的web应用（必须通过context元素定义）都位于该Host下。</p>
<p>2&gt; 包括共享用户信息的realm必须被设置在同一级Host中或者嵌套之外。</p>
<p>3&gt; 不能被context中的realm覆盖。</p>
<p>4&gt; 使用单点登录的web应用最好使用一个Tomcat的内置的验证方式（被定义在web.xml中的<auth-method> 中），这比自定义的验证方式强，Tomcat内置的的验证方式包括basic、digest、form和client-cert。</p>
<p>5&gt; 如果你使用单点登录，还希望集成一个第三方的web应用到你的网站中来，并且这个新的web应用使用它自己的验证方式，而不使用容器管理安全，那你基本上就没招了。你的用户每次登录原来所有应用时需要登录一次，并且在请求新的第三方应用时还得再登录一次。</p>
<p>当然，如果你拥有这个第三方web应用的源码，而你又是一个程序员，你可以修改它，但那恐怕也不容易做。</p>
<p>6&gt; 单点登录需要使用cookies。</p>
<p><strong>7、配置用户定制目录（Customized User Directores）</strong></p>
<p>一些站点允许个别用户在服务器上发布网页。例如，一所大学的学院可能想给每一位学生一个公共区域，或者是一个ISP希望给一些web空间给他的客户，但这又不是虚拟主机。在这种情况下，一个典型的方法就是在用户名前面加一个特殊字符（~），作为每位用户的网站，比如：</p>
<p><span class=code>http://www.cs.myuniversity.edu/~username<br>http://members.mybigisp.com/~username</span></p>
<p>Tomcat提供两种方法在主机上映射这些个人网站，主要使用一对特殊的Listener元素。Listener的className属性应该是org.apache.catalina.startup.UserConfig，userClass属性应该是几个映射类之一。</p>
<p>如果你的系统是Unix，它将有一个标准的/etc/passwd文件，该文件中的帐号能够被运行中的Tomcat很容易的读取，该文件指定了用户的主目录，使用PasswdUserDatabase 映射类。</p>
<p><span class=code>&lt;Listener className=<br>"org.apache.catalina.startup.UserConfig"<br>directoryName="public_html"<br>userClass="org.apache.catalina.<br>startup.PasswdUserDatabase"/&gt;</span></p>
<p>web文件需要放置在像/home/users/ian/public_html或者/users/jbrittain/public_html一样的目录下面。当然你也可以改变public_html 到其他任何子目录下。</p>
<p>实际上，这个用户目录根本不一定需要位于用户主目录下里面。如果你没有一个密码文件，但你又想把一个用户名映射到公共的像/home一样目录的子目录里面，则可以使用HomesUserDatabase类。</p>
<p><span class=code>&lt;Listener className=<br>"org.apache.catalina.startup.UserConfig"<br>directoryName="public_html"<br>homeBase="/home"<br>userClass="org.apache.catalina.<br>startup.HomesUserDatabase"/&gt;</span></p>
<p>这样一来，web文件就可以位于像/home/ian/public_html或者/home/jasonb/public_html一样的目录下。这种形式对Windows而言更加有利，你可以使用一个像c:\home这样的目录。</p>
<p>这些Listener元素，如果出现，则必须在Host元素里面，而不能在context元素里面，因为它们都用应用于Host本身。</p>
<p><strong>8、在Tomcat中使用CGI脚本</strong></p>
<p>Tomcat主要是作为Servlet/JSP容器，但它也有许多传统web服务器的性能。支持通用网关接口（Common Gateway Interface，即CGI）就是其中之一，CGI提供一组方法在响应浏览器请求时运行一些扩展程序。</p>
<p>CGI之所以被称为通用，是因为它能在大多数程序或脚本中被调用，包括：Perl，Python，awk，Unix shell scripting等，甚至包括Java。</p>
<p>当然，你大概不会把一个Java应用程序当作CGI来运行，毕竟这样太过原始。一般而言，开发Servlet总要比CGI具有更好的效率，因为当用户点击一个链接或一个按钮时，你不需要从操作系统层开始进行处理。</p>
<p>Tomcat包括一个可选的CGI Servlet，允许你运行遗留下来的CGI脚本。</p>
<p>为了使Tomcat能够运行CGI，你必须做如下几件事：</p>
<p>1. 把servlets-cgi.renametojar （在CATALINA_HOME/server/lib/目录下）改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下。</p>
<p>2. 在Tomcat的CATALINA_BASE/conf/web.xml 文件中，把关于<servlet-name> CGI的那段的注释去掉（默认情况下，该段位于第241行）。</p>
<p>3. 同样，在Tomcat的CATALINA_BASE/conf/web.xml文件中，把关于对CGI进行映射的那段的注释去掉（默认情况下，该段位于第299行）。注意，这段内容指定了HTML链接到CGI脚本的访问方式。</p>
<p>4. 你可以把CGI脚本放置在WEB-INF/cgi 目录下（注意，WEB-INF是一个安全的地方，你可以把一些不想被用户看见或基于安全考虑不想暴露的文件放在此处），或者你也可以把CGI脚本放置在context下的其他目录下，并为CGI Servlet调整cgiPathPrefix初始化参数。这就指定的CGI Servlet的实际位置，且不能与上一步指定的URL重名。</p>
<p>5. 重新启动Tomcat，你的CGI就可以运行了。</p>
<p>在Tomcat中，CGI程序缺省放置在WEB-INF/cgi目录下，正如前面所提示的那样，WEB-INF目录受保护的，通过客户端的浏览器无法窥探到其中内容，所以对于放置含有密码或其他敏感信息的CGI脚本而言，这是一个非常好的地方。</p>
<p>为了兼容其他服务器，尽管你也可以把CGI脚本保存在传统的/cgi-bin目录，但要知道，在这些目录中的文件有可能被网上好奇的冲浪者看到。另外，在Unix中，请确定运行Tomcat的用户有执行CGI脚本的权限。</p>
<p><strong>9、改变Tomcat中的JSP编译器（JSP Compiler）</strong></p>
<p>在Tomcat 4.1（或更高版本，大概），JSP的编译由包含在Tomcat里面的Ant程序控制器直接执行。这听起来有一点点奇怪，但这正是Ant有意为之的一部分，有一个API文档指导开发者在没有启动一个新的JVM的情况下，使用Ant。</p>
<p>这是使用Ant进行Java开发的一大优势。另外，这也意味着你现在能够在Ant中使用任何javac支持的编译方式，这里有一个关于Apache Ant使用手册的javac page列表。</p>
<p>使用起来是容易的，因为你只需要在<init-param> 元素中定义一个名字叫&#8220;compiler&#8221;，并且在value中有一个支持编译的编译器名字，示例如下：</p>
<p><span class=code>&lt;servlet&gt;<br>&lt;servlet-name＞jsp&lt;/servlet-name&gt;<br>&lt;servlet-class&gt;<br>org.apache.jasper.servlet.JspServlet<br>&lt;/servlet-class&gt;<br>&lt;init-param&gt;<br>&lt;param-name&gt;logVerbosityLevel<br>&lt;/param-name&gt;<br>&lt;param-value&gt;WARNING&lt;/param-value&gt;<br>&lt;/init-param&gt;<br>&lt;init-param&gt;<br>&lt;param-name&gt;compiler&lt;/param-name&gt;<br>&lt;param-value&gt;jikes&lt;/param-value&gt;<br>&lt;/init-param&gt;<br>&lt;load-on-startup&gt;3&lt;/load-on-startup&gt;<br>&lt;/servlet&gt;</span> </p>
<p>当然，给出的编译器必须已经安装在你的系统中，并且CLASSPATH可能需要设置，那处决于你选择的是何种编译器。</p>
<p><strong>10、限制特定主机访问（Restricting Access to Specific Hosts）</strong></p>
<p>有时，你可能想限制对Tomcat web应用的访问，比如，你希望只有你指定的主机或IP地址可以访问你的应用。这样一来，就只有那些指定的的客户端可以访问服务的内容了。为了实现这种效果，Tomcat提供了两个参数供你配置：RemoteHostValve 和RemoteAddrValve。</p>
<p>通过配置这两个参数，可以让你过滤来自请求的主机或IP地址，并允许或拒绝哪些主机/IP。与之类似的，在Apache的httpd文件里有对每个目录的允许/拒绝指定。例如你可以把Admin Web application设置成只允许本地访问，设置如下：</p>
<p><span class=code>&lt;Context path=<br>"/path/to/secret_files" ...&gt;<br>&lt;Valve className="org.apache.<br>catalina.valves.RemoteAddrValve"<br>allow="127.0.0.1" deny=""/&gt;<br>&lt;/Context&gt;</span></p>
<p>如果没有给出允许主机的指定，那么与拒绝主机匹配的主机就会被拒绝，除此之外的都是允许的。与之类似，如果没有给出拒绝主机的指定，那么与允许主机匹配的主机就会被允许，除此之外的都是拒绝的。</p>
来自:http://www.uml.org.cn/j2ee/200602132.htm
<img src ="http://www.blogjava.net/waterjava/aggbug/129263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2007-07-10 10:27 <a href="http://www.blogjava.net/waterjava/archive/2007/07/10/129263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在windows 2000,XP 下通过mod_jk2.so整合Tomcat5.0 和 Apache2.0</title><link>http://www.blogjava.net/waterjava/archive/2007/06/27/126657.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Wed, 27 Jun 2007 12:59:00 GMT</pubDate><guid>http://www.blogjava.net/waterjava/archive/2007/06/27/126657.html</guid><wfw:comment>http://www.blogjava.net/waterjava/comments/126657.html</wfw:comment><comments>http://www.blogjava.net/waterjava/archive/2007/06/27/126657.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/waterjava/comments/commentRss/126657.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/waterjava/services/trackbacks/126657.html</trackback:ping><description><![CDATA[<p>在windows 2000,XP 下通过mod_jk2.so整合Tomcat5.0 和 Apache2.0</p>
<p>------- dreamsky15(阿贤) 原创</p>
<p>准备工作：<br>分别到<a href="http://www.sun.com/"><u><font color=#0000ff>www.sun.com</font></u></a> 和 <a href="http://www.apache.org/"><u><font color=#800080>www.apache.org</font></u></a> 下载</p>
<p>JDK1.4 : j2sdk-1_4_2_04-windows-i586-p.exe<br>Tomcat5 : jakarta-tomcat-5.0.14.exe<br>apache2：apache_2.0.48-win32-x86-no_ssl.exe<br>jk2 : jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip</p>
<p>版本可能有所更新。</p>
<p><br>1.安装JDK1.4,指定安装在 C:\JDK1.4目录下；<br>2.确认80和8080端口不被占用，特别是IIS是否占用80端口，否则要修改端口设置；<br>3.安装Tomcat5.0，指定安装在C:\Tomcat5.0目录下，<br>&nbsp;指定JAVA虚拟机目录为刚才安装的 C:\JDK1.4；<br>4.安装apache2,指定安装在 C:\ 根目录下，那么它自己会自动创建Apache2目录，<br>&nbsp;得到 C:\Apache2 最终目录；<br>5.设置windows系统环境变量中的系统变量：</p>
<p>path:<br>&nbsp;C:\JDK1.4\bin;C:\JDK1.4\jre\bin;</p>
<p>classpath:<br>&nbsp;C:\JDK1.4;C:\JDK1.4\lib;C:\JDK1.4\lib\dt.jar;C:\JDK1.4\lib\tools.jar;C:\Tomcat5.0\common\lib\servlet-api.jar;C:\Tomcat5.0\common\lib\tools.jar;<br>6.重启电脑<br>7.用浏览器访问<br><a href="http://localhost/"><u><font color=#800080>http://localhost/</font></u></a>&nbsp; 和 <a href="http://localhost:8080/"><u><font color=#800080>http://localhost:8080/</font></u></a>&nbsp; <br>两个网站，它们分别是apache和Tomcat的默认首页；<br>如果不成功则要重新检查设置；<br>8.解压 jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip<br>9.在解压文件的 doc\mod_jk2 目录下有 INSTALL.txt 英文文档教你安装，你可以作为参照。<br>10.在解压文件的 modules 目录下有 mod_jk2.so 文件，将其复制到 C:\Apache2\modules；<br>11.在解压文件的 conf 目录下有 workers2.properties.sample文件，将其复制到 C:\Apache2\conf 目录下，将文件名改为workers2.properties，增加两行：<br>[uri:/*.jsp]<br>group=lb</p>
<p>这表明要Tomcat解释所有以 jsp 为后缀的文件。</p>
<p>增加<br>[uri:/servlet/*]<br>group=lb</p>
<p>这表明要Tomcat解释/servlet/目录下的所有文件，<br>所以所有servlet最好映射到 /servlet/ 路径下，其他的文件不要放到这个目录下。<br>（注:tomcat中所有没有在 web.xml 中注册的 servlet默认映射到 /servlet/ 路径下。<br>但前提条件是你要修改tomcat的 web.xml ,去掉两处 &lt;servlet-name&gt;invoker&lt;/servlet-name&gt;的注释，来激活这个功能。)</p>
<p>这样做，是为了令到Tomcat专职解释所有 jsp 和 servlet ，而将 html,txt等类型的文件交给强大的Web服务器——apache解释，各司其职，分担Tomcat的压力。</p>
<p>12.备份好C:\Apache2\conf\httpd.conf防止不测，修改 C:\Apache2\conf\httpd.conf 文件，原文件有很多行LoadModule，<br>在其后增加一行：<br>LoadModule jk2_module modules/mod_jk2.so<br>这个在 INSTALL.txt 英文文档里有说；</p>
<p>找到 DocumentRoot "C:/Apache2/htdocs" ，修改为你指定的根目录<br>DocumentRoot "C:/Tomcat5.0/webapps"</p>
<p>正反斜杠无所谓，最好用 / ;</p>
<p>同样找到&lt;Directory "C:/Apache2/htdocs"&gt;<br>修改为&lt;Directory "C:/Tomcat5.0/webapps"&gt;</p>
<p>找到 DirectoryIndex index.html index.html.var<br>在后面增加 index.jsp 使得apache将index.jsp也作为默认首页。</p>
<p>13.将原来 &lt;VirtualHost *:80&gt; 相关的设置注释去掉，自定义你的实际参数；<br><span style="COLOR: red"><strong><u>其中<br>DocumentRoot /www/docs/dummy-host.example.com<br>改为DocumentRoot "C:/Tomcat5.0/webapps"</u></strong></span><br>将 AddDefaultCharset ISO-8859-1 改为<br>AddDefaultCharset gb2312<br>使得apache默认是简体中文。<br>14.<br>启动Tomcat5.0,apache2<br>你会看到apache service monitor 控制台窗口下的状态栏文字由原来的<br>Apache/2.0.48 (Win32) <br>变为<br>Apache/2.0.48 (Win32) mod_jk2/2.0.4</p>
<p>分别访问 <a href="http://localhost/jsp-examples/"><u><font color=#800080>http://localhost/jsp-examples/</font></u></a> 和<br><a href="http://localhost:8080/jsp-examples/"><u><font color=#800080>http://localhost:8080/jsp-examples/</font></u></a><br>测试其中的jsp例子，如果都能正确运行，证明配置成功！！！<br>恭喜你！ :)</p>
<p>有错误或疑问，请多多交流。</p>
<br>来自:<br><a href="http://blog.csdn.net/dreamsky15/archive/2004/10/11/132261.aspx">http://blog.csdn.net/dreamsky15/archive/2004/10/11/132261.aspx</a> 
<img src ="http://www.blogjava.net/waterjava/aggbug/126657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/waterjava/" target="_blank">狼爱上狸</a> 2007-06-27 20:59 <a href="http://www.blogjava.net/waterjava/archive/2007/06/27/126657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>