tomcat共享线程池的配置
配置很简单
第一步,打开共享的线程池
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="1000" minSpareThreads="50" maxIdleTime="600000"/>
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="1000" minSpareThreads="50" maxIdleTime="600000"/>
默认前后是注释<!-- -->掉的,去掉就可以了。其中
name
The name used to reference this pool in other places in server.xml. The name is required and must be unique.
这个是线程池的名字,必须唯一,我们在后面的配置里要用到这个东西
namePrefix
(String) The name prefix for each thread created by the executor. The thread name for an individual thread will be namePrefix+threadNumber
线程的名字前缀,用来标记线程名字的,这样每个线程就用这个前缀加上线程编号了,比如
catalina-exec-1
catalina-exec-2
maxThreads
(int) The max number of active threads in this pool, default is 200
允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,反正只是限制而已,不占用资源
minSpareThreads
(int) The minimum number of threads always kept alive, default is 25
最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源。
maxIdleTime
(int) The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads. Default value is 60000(1 minute)
超过最小活跃线程数量的线程,如果空闲时间超过这个设置后,会被关别。默认是1分钟。
threadPriority
(int) The thread priority for threads in the executor, the default is Thread.NORM_PRIORITY
线程的等级。默认是Thread.NORM_PRIORITY
第二步
在 Connector里指定使用共享线程池
<Connector
port="8009"
protocol="AJP/1.3"
maxThreads="5000"
executor="tomcatThreadPool"
<Connector
port="8009"
protocol="AJP/1.3"
maxThreads="5000"
executor="tomcatThreadPool"
注意,一旦使用了线程池,则其它的线程属性,比如 maxThreads等将被忽略
我测试了一下,由于每次请求不再需要重新分配线程,系统响应速度还是有很明显的改善的。
连接池的配置
本方法的原理是,在%CATALINA%\conf\server.xml中设置数据库的连接属性,
在应用目录的/WEB-INF/web.xml中配置一个引用,
然后在应用中的/META-INF/context.xml中将以上两个配置联系起来。
所以真正产生连接的是tomcat系统级,因此数据库驱动应该放在%CATALINA%\common\lib中
以下是具体步骤:
1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中。
2.在server.xml中设置数据源,以MySQL数据库为例,如下:
在<GlobalNamingResources> </GlobalNamingResources>节点中加入,
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password="root"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://127.0.0.1:3306/test"
maxActive="4"/>
属性说明:name,数据源名称,通常取”jdbc/XXX”的格式;
type,”javax.sql.DataSource”;
password,数据库用户密码;
driveClassName,数据库驱动;
maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
接将被标记为不可用,然后被释放。设为0表示无限制。
MaxActive,连接池的最大数据库连接数。设为0表示无限制。
maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
无限制。
3.在你的web应用程序的web.xml中设置数据源参考,如下:
在<web-app></web-app>节点中加入,
<resource-ref>
<description>MySQL DB Connection Pool</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
子节点说明: description,描述信息;
res-ref-name,参考数据源名字,同上一步的属性name;
res-type,资源类型,”javax.sql.DataSource”;
res-auth,”Container”;
res-sharing-scope,”Shareable”;
4.在web应用程序的/META-INF/context.xml中设置数据源链接,如下:
在<Context></Context>中加入:
<Context>
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"/>
</Context>
属性说明:name,同第2步和第3步的属性name值,和子节点res-ref-name值;
type,同样取”javax.sql.DataSource”;
global,同name值。
至此,设置完成,下面是如何使用数据库连接池。
1.建立一个连接池类,DBPool.java,用来创建连接池,代码如下:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBPool {
private static DataSource pool;
static {
Context env = null;
try {
env = (Context) new InitialContext().lookup("java:comp/env");
pool = (DataSource)env.lookup("jdbc/DBPool");
if(pool==null)
System.err.println("'DBPool' is an unknown DataSource");
} catch(NamingException ne) {
ne.printStackTrace();
}
}
public static DataSource getPool() {
return pool;
}
}
2.在要用到数据库操作的类或jsp页面中,用DBPool.getPool().getConnection(),
获得一个Connection对象,就可以进行数据库操作,最后别忘了对Connection对象调用close()方法,
注意:这里不会关闭这个Connection,而是将这个Connection放回数据库连接池。
分享到:
相关推荐
《Tomcat常用配置详解》 Tomcat作为一款广泛使用的开源Java Servlet容器,是Apache软件基金会下的Jakarta项目的一部分。它提供了对Servlet和JSP规范的支持,使得开发者能够轻松地部署和运行Java Web应用。本文将...
本资料详细解析了Tomcat的常用配置信息,对于Java开发面试者和Web项目开发初学者来说,了解并掌握这些知识是至关重要的。 1. **Tomcat基础配置** - `server.xml`: 这是Tomcat的核心配置文件,包含了服务器的全局...
### Tomcat常用配置详解 #### 一、Tomcat连接数量配置 Tomcat作为一款广泛使用的Web服务器,其连接数量配置对于提升系统响应能力和稳定性至关重要。本文将深入探讨Tomcat连接数配置的关键参数及其作用。 ##### **...
Tomcat的常用配置Tomcat的常用配置Tomcat的常用配置
Apache Tomcat是一款开源的Java Servlet容器,用于部署和运行Java Web应用程序。它是基于Sun Microsystems的Java Servlet和JavaServer Pages(JSP)技术的。Tomcat以其轻量级、易用性和稳定性著称,是开发和测试Java...
### Tomcat常用功能的配置详解 #### 一、修改Tomcat的JDK目录 在运行Tomcat时,我们需要指定一个JDK版本。这是因为Tomcat作为Java应用服务器,其运行依赖于JDK环境。若想更改Tomcat所使用的JDK路径,可以按照以下...
2. **共享session配置:** 在`<Manager>`元素中设置`sharedSessionConfig`属性为true,启用集群间会话共享。 3. **负载均衡器配置:** 配置如Nginx,设定相应的负载均衡策略,并将请求转发到各个Tomcat实例。 4. **...
以下是一个详细的步骤指南,涵盖了从下载到配置的全过程,以及一些常用的设置,包括环境变量和内存配置。 1. **下载Tomcat**: 首先,访问Apache官方网站(http://tomcat.apache.org/)下载Tomcat 8的最新稳定版本...
3.1.2 **Tomcat常用配置文件** 主要配置文件有server.xml、web.xml、context.xml等。server.xml定义了服务器的整体配置,web.xml定义全局Web应用的默认配置,context.xml则用于配置特定Web应用。 3.1.3 **Tomcat...
Tomcat 6.0 配置心得 Tomcat 6.0 是一个功能强大且性能高效的 Web 服务器,它相比 Tomcat 4.0 有了许多改进和增强。然而,在使用 Tomcat 6.0 时,我们可能会遇到一些问题,如连接池配置、中文问题、中文文件名问题...
标题"tomcat5.0和tomcat5.5.12配置连接池的异同"指的是对比分析两个不同版本的Tomcat——5.0和5.5.12在设置数据库连接池(通常使用JNDI资源来实现)时的配置步骤和方法上的差异。连接池是优化数据库性能的重要手段,...
2. 将 Redis 文件中的 conf 配置文件和常用命令移动到统一文件中 mv /lamp/redis-3.0.7/redis.conf /usr/local/redis/etc cd /lamp/redis-3.0.7/src mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-...
【eclipse+tomcat环境配置】是开发Java Web应用程序时常用的一种集成开发环境与服务器的配置方式。在本文中,我们将详细讲解如何配置这个环境,包括安装JAVA虚拟机、配置Tomcat、设置环境变量,以及在eclipse中配置...
Tomcat 中配置数据源原理详解 在本文中,我们将详细介绍在 Tomcat 中配置数据源的原理。数据源是指Java应用程序连接数据库的接口,通过配置数据源,我们可以在 Java 应用程序中访问数据库。 首先, let's talk ...
在MYEclipse中,Tomcat是最常用的Web服务器之一。配置Tomcat可以通过以下步骤来实现: 1. 打开MYEclipse,点击菜单栏中的Window菜单,然后点击Preferences,弹出Preferences对话框。 2. 在Preferences对话框中,...
在Java Web开发中,Tomcat作为常用的Servlet容器,经常被用于部署和运行Java EE应用程序。JNDI(Java Naming and Directory Interface)是Java平台的一项服务,它允许应用程序通过名字查找资源,如数据源、EJB等。在...