使用 apache tomcat 配置一个可以应用的 web 网站,要达到以下要求: 1、  Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。 2、  为系统设定 Session 超时时间,包括 Apache tomcat 3、  为系统屏蔽文件列表,包括 Apache tomcat
2.    安装 tomcat
2.1. 下载,解压 tomcat
不要下载安装版 , 下载地址
2.2. 配置 tomcat
2.2.1 .     配置 server 的关闭口
我们需要在一台机器上跑 2 个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。在 server.xml 中找到 server, 将:
<Server port="8005" shutdown="SHUTDOWN">
改为
<Server port="XXXX" shutdown="SHUTDOWN">
XXXX 在这里表示不同的端口:我的两个 tomcat 分别使用 8035 8045
 
注意:这里之所以要配置不同的 tomcat 关闭口,只是因为我们使用了多个 tomcat ,其实用一个 server 多个实例也可以。
2.2.2 .     配置 service
我们需要对不同的 tomcat service 取不同的名字,在 server.xml 中找到:
<Service name="Catalina">
改为:
<Service name="XXXX">
两个 service 分别为 tomcat6 tomcat5
2.2.3 .     配置 Connector
这个部分主要是要改两个 Connector ,当然前提是你的 tomcat 只有两个 Connector
修改 ajp1.3 的端口:
找到: <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改为: <Connector port="XXXX" protocol="AJP/1.3" redirectPort="8443" />
两个 Service ajp/1.3 的端口分别为: 8019 8029
修改 http 的端口:
找到:
<Connector port="8080" protocol="HTTP/1.1"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443" />
改为:
<Connector port="XXXX" protocol="HTTP/1.1"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443" />
两个 Service ajp/1.3 的端口分别为: 8060 8070
2.2.4 .     配置 Engine
Engine 主要是配置 jvmRoute 属性,找到:
<Engine name="Catalina" defaultHost="localhost">
改为:
<Engine jvmRoute="XXXX" name="Catalina" defaultHost="localhost">
两个实例分别为: tomcat6 tomcat5.
2.2.5 .     配置公用性 Context
如果有 Context 是多个系统公用的,比如图片等的存放地,可以做个配置:
Host 中增加:
<Context path="/p_w_picpath" docBase="D:\webRoot\p_w_picpath" debug="0" reloadable="false" crossContext="true">
</Context>
2.2.6 .     屏蔽文件列表
打开 tomcat 目录下的 conf/web.xml
找到:
<servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
listings 参数改为 false;
2.3. 配置应用 (web.xml)
对系统应用做些控制。
配置 session 过期时间,大多数网站用户都只是做些浏览性的操作,为了减轻服务器负载压力,我们将 session 超时时间从默认的 30 分钟变为 5 分钟。
web 应用程序的 web.xml servlet-mapping 之后增加如下一段:
<session-config>
    <session-timeout>5</session-timeout>
</session-config>
3.    安装 Apache
3.1. 下载、安装 Apache
下载后点击安装 msi 文件。
安装的时候没有什么特别需要注意的地方,按照默认就行了。是否安装为 service 看具体情况而定。
3.2. 下载、安装 Apache tomcat Connector
注意,很多网站上都介绍是 JK2 ,可能是觉得 JK2 JK 要新吧,其实 JK2 已经停止研发了,建议使用 jk1.2
下载压缩包,之后将 module 目录中的 mod_jk-apache****.so 文件放入 /module/ 目录下。
3.3. 配置 Apache httpd.conf
3.3.1 .     配置端口:
找到
Listen 80
改为
Listen **
当然如果不需要改的话,就不用改了。正常情况无须更改。
3.3.2 .     配置 DocumentRoot
找到 DocumentRoot 段,将其改为:
DocumentRoot "E:/MyWebsite"
这里的 "E:/MyWebsite" 指的是你的 web 程序的根路径,视具体应用而定。
3.3.3 .     配置 serverName
找到 serverName 这个段,将其配置为你的 ServerName
如果没有配置为域名,配为 IP 也可以,此处还不是很清楚,多虚拟主机的情况的配置。
3.3.4 .     配置虚拟主机
<VirtualHost *:80>
    ServerAdmin flyffa@gmail.com
    DocumentRoot E:/MyWebsite
    ServerName localhost
    DirectoryIndex index.html index.htm index.jsp
    ErrorLog logs/error_log
    CustomLog logs/access_log common
    ErrorDocument 404 /sys/logon.jsp
</VirtualHost>
3.4. 配置 JK 方式的负载均衡
3.4.1 .     配置 module
我们需要与 tomcat 做连接,所以要把 tomcat connector 的模块配置进去。
LoadModule 部分加入:
LoadModule jk_module modules/mod_jk-apache-2.0.55.so -加载模块
这个 so 是我下载的版本,个人可以根据自己下载的文件名加以配置
JkWorkersFile conf/workers.properties -指定 connector 的配置文件名称
JkLogFile logs/mod_jk.log -指定 connector 的日志文件名称
JkLogLevel info -指定 connector 的日志等级
3.4.2 .     配置 worker 列表 (conf/workers.properties)
定义列表
worker.list=tomcat6,tomcat5,loadbalancer
定义一个名为 “loadbalancer” worker
其作为对多个 Tomcat 进程的负载平衡使用:
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat5, tomcat6
负载平衡类型的 worker 并不与 Tomcat worker 通讯,它负责管理这些 Tomcat worker
定义多个 worker 列表
# Set properties for tomcat6 (ajp13)
worker.tomcat6.type=ajp13
worker.tomcat6.host=localhost
worker.tomcat6.port=8019
worker.tomcat6.lbfactor=50
worker.tomcat6.cachesize=10
worker.tomcat6.cache_timeout=600
worker.tomcat6.socket_keepalive=1
worker.tomcat6.reclycle_timeout=300
 
# Set properties for tomcat5 (ajp13)
worker.tomcat5.type=ajp13
worker.tomcat5.host=localhost
worker.tomcat5.port=8029
worker.tomcat5.lbfactor=50
worker.tomcat5.cachesize=10
worker.tomcat5.cache_timeout=600
worker.tomcat5.socket_keepalive=1
worker.tomcat5.reclycle_timeout=300
注意: lbfactor= 50 当此 Tomcat worker 被用于一个负载平衡 worker 使用时,此属性将被使用。它定义了此 worker 的负载平衡权值。 cachesize= 10 当在多线程的 web server (例如 apache2.0 IIS Netscape )中使用 JK 时,此属性是有效的。如果将 cachesize 的值设置为较高的值,这些支持多线程的 web server 将获得很好的处理能力。如果此属性不被设置,则连接 cache 特性将失效。
3.4.3 .     配置 Apache tomcat 的桥接
DocumnetRoot 片段下加入
JkMount /*.jsp tomcat6
JkMount /*.do tomcat6
JkMount /*Servlet tomcat6
这里只是简单的将 apache 的请求转到其中的一个 tomcat 中,形成桥接,至于负载均衡的时候,就无须进行这步操作,直接启动负载均衡。启动负载均衡见下一节。
3.4.4 .     启动负载均衡
DocumnetRoot 片段下加入
JkMount /*.jsp loadbalancer
JkMount /*.do loadbalancer
JkMount /*Servlet loadbalancer
-指定对所有的请求启动负载均衡,这里的 loadbalancer 定义的 worker 的名字
这里我在配置的时候犯了两个错误:
第一是没有配置 JkWorkersFile conf/workers.properties ,以为 Apache 会自动认识(其实 apache 是自动产生了一个叫做 ajp13 worker ,指向本机的 8009 端口)。
第二是以为 JkMount 语句中出现 loadbalancer,ajp13 之类的是系统设定的东西,其实都是在 workers.properties 文件中定义的,结果出现名字不匹配的情况。后来配置了 JkLogFile logs/mod_jk.log 之后看到错误日志才明白。
3.5. 配置 Proxy 方式的负载均衡
使用 Apache2.1 以上的版本,就可以用 mod_proxy_ajp 来完成负载均衡的配置,不过到目前为止,没有看到如何让 Apache 负责静态部分, tomcat 负责动态部分的配置方式,只能用 path 进行区分分发请求。如:在虚拟主机的配置中增加:
ProxyPass / ajp://localhost:8019/
ProxyPa***everse / ajp://localhost:8019/
而形如:
ProxyPass /*.jsp ajp://localhost:8019/
ProxyPa***everse /*.jsp ajp://localhost:8019/
这样的配置是不能通过的。

 

source:http://blog.chinaunix.net/space.php?uid=17085332&do=blog&id=2832063

 

#########################################################

workers.properties说明

每个 tomcat worker是一个服务于web server、等待执行servlet的tomcat实例。例如我们经常使用像apache之类的web server转发sevlet请求给位于其后面的一个tomcat进程(也就是前面所说的worker)。本文详细介绍了如何配置各种类型worker和 loadbalance,并说明了各种类型worker的特性和loadbalance配置的原理。

二、为什么使用tomcat workers:

上文描述了一个非常简单的结构,事实上能够配置多个tomcat workers来处理web server转发的servlet请求。而这样配置的理由不外乎以下几种假想环境:

* 我们在开发环境中发布不同的tomcat workers为各自不同的应用服务。当然在开发环境中的开发者共享同一个web server,但是每个tomcat worke服务于拥有它的开发者。

* 我们在不同的tomcat进程上定义各自的虚拟主机,这样不同的公司可以使用各自的web site,从而使他们的web site得到了合理的分割。

* 我们提供负载平衡的web site,也就意味着同时使用多个tomcat workers,而每个tomcat worker具有独立的主机并且在workers之间要分配通过web server转发来的请求。

当然,这些假想情况也许并不能涵盖使用多个workers的所有状况。

三、workers.properties配置说明:

定义tomcat workers的方法是在apache的conf目录下编写一个名为“workers.properties”的属性文件。本文将详细解释如何进行配置的:

1.定义workers列表:

定义workers的方法就是在apache的conf目录下编写一个workers.properties文件,使其作为apache的插件来发挥作用。

定义workers列表的格式:

worker.list =<使用“,”分割的worker 名字列表>



例如:

worker.list= worker1, worker2

当apache启动时,workers.properties作为插件将初始化出现在worker.list列表中的workers。

2.定义workers的类型:

每个被命名的worker都应有一些关于其自身的附加信息。这些信息包括了worker的类型和其它相关信息。这里讨论的是jk1.2.5中定义的workers类型。

定义worker类型的格式:

worker . worker名字. type =

worker名字的命名最好遵循java的命名规范。

worker类型取值于下面的表格:

定义一个名为“local”的worker,其使用ajpv12协议与tomcat 进程通讯:

worker.local.type=ajp12

定义一个名为“remote”的worker,其使用ajpv13协议与tomcat 进程通讯:

worker.remote.type=ajp13

定义一个名为“fast”的worker,其使用jni的方式与tomcat 进程通讯:

worker.fast.type=jni

定义一个名为“loadbalancer”的worker,其作为对多个tomcat 进程的负载平衡使用:

worker.loadbalancer.type=lb

各个类型具有不同的行为,我们在下文中会详细解释。

3.设置worker属性:

在定义worker之后,还需要提供各个worker的属性,这些属性的定义使用下面的方式:

worker.<worker名字>.<属性>=<属性值>


3-1 ajp12类型的worker属性:

ajp12类型的worker工作时使用基于tcp/ip socket的ajpv12协议转发请求给“进程外”tomcat worker。

ajp12 worker属性如下:

host:

侦听ajp12请求的tomcat worker主机。

port:

tomcat worker主机的侦听端口。

lbfactor:

当此tomcat worker被用于一个负载平衡worker使用时,此属性将被使用。它定义了此worker的负载平衡权值。

例如:下面的“worker1”定义了一个位于www.x.com主机上的tomcat,它使用8007端口侦听apache发来的请求,并具有2.5的负载权值

worker.worker1.host=www.x.comworker.worker1.port=8007worker.worker1.lbfactor=2.5

注意:在ajpv12协议中,针对每个请求都要一个连接建立、使用、关闭。其默认侦听端口为8007。

3-2 ajp13类型的worker属性:

ajp13类型的worker工作时使用基于tcp/ip socket的ajpv13协议转发请求给“进程外”tomcat worker。

ajpv13协议与ajpv12协议的主要不同:

* ajpv13具有更丰富的二进制协议,它使用将频繁使用的字符串编码为小整数的方式对请求数据进行压缩。

* ajpv13重用打开的socket并保留这些打开的socket以处理将来的请求。这在apache与tomcat之间具有防火墙的网络环境下是必要的。

* ajpv13具有对ssl信息的处理能力,以致容器能够实现ssl的相关方法(如issecure())。

注意:ajp13当前只能用于支持“进程外”协议的tomcat 4.0.x, 4.1.x and 5。

下表描述了ajp13worker接受的属性:

host:

侦听ajp13请求的tomcat worker主机。

port:

tomcat worker主机的侦听端口。

lbfactor:

当此tomcat worker被用于一个负载平衡worker使用时,此属性将被使用。它定义了此worker的负载平衡权值。

cachesize:

当在多线程的web server(例如apache2.0、iis 、netscape)中使用jk时,此属性是有效的。如果将cachesize的值设置为较高的值,这些支持多线程的web server将获得很好的处理能力。如果此属性不被设置,则连接cache特性将失效。

cache_timeout:

本属性用于声明jk在cache中保留一个打开的socket的时间,它对减少web serer的线程数有所帮助。

使用cache_timeout的原因:

众所周知,一个身背重负的web server(例如apache)建立childs/threads来处理负载,而当负载减少时它将销毁无用的childs/threads。每个 child在转发请求给tomcat时要打开一个ajp13连接,而在tomcat那一端也将建立一个ajp13线程与之通讯。

但是问题出现在一个ajp13连接建立完成后,child没有及时的释放那个ajp13连接,由于web server1将保持它的childs/threads运行已处理高负载,即使childs/threads处理快速的静态内容,在tomcat端也将积累很多的无用ajp13线程。

socket_keepalive:

当防火墙位于web server与tomcat之间时,防火墙将尝试断开未激活的网络连接。此属性将告诉操作系统在未激活的连接中发送keep_alive信息(发送间隔时间依赖于操作系统的设置,一般为120秒),这样将防止防火墙切断未激活的网络连接。

但此设置并不是×××,它对于某些防火墙也无能为力。

socket_timeout:

此属性说明连接在未激活的状况下持续多久,web server将主动切断之。这是一个使tomcat端的陈旧线程不致过多的好方法,但是也带来了在下一次请求到来时需要重新打开socket的开销。此属性与cache_timeout有类似的功效,但是它工作在non-cache模式。

connect_timeout:

web server在连接建立后将一个ping请求发送到ajp13协议的连接上。 此属性说明了web server等待pong回应的时间(以ms为单位)。此属性在jk 1.2.6版本被增加进来,以求避免tomcat的死机,tomcat 3.3.2+, 4.1.28+ and 5.0.13+实现了对使用ajp13的 ping/pong的支持。此属性默认为失效的。

prepost_timeout:

web server在转发一个请求后将一个ping请求发送到ajp13协议的连接上。此属性说明了web server等待pong回应的时间(以ms为单位)。此属性在jk 1.2.6版本被增加进来,以求避免tomcat的死机,tomcat 3.3.2+, 4.1.28+ and 5.0.13+实现了对使用ajp13的 ping/pong的支持。此属性默认为失效的。

reply_timeout:

此属性告诉web server在接到远端的tomcat已死并实时的切换到集群中的另外一个tomcat的回应之前等待一段时间。默认情况下web server将永远等待。属性值为web server要等待回应的时间(以ms为单位),所以如果具有运行时间较长的servlet时设置其值要小心。此属性在jk 1.2.6版本被增加进来,以求避免tomcat的死机和在支持ajp13的servlet引擎上发生的问题。此属性默认为失效的。

recovery_options:

此属性说明了web server在检测到tomcat失败后如何进行恢复工作。默认情况下,web server将转发请求给处于负载平衡模式中的另一个tomcat。属性值为0,说明全部恢复;属性值为1,说明如果在tomcat接到请求后出现失败状况,则不进行恢复;属性值为2,说明如果在tomcat发送http头给客户端后出现失败状况,则不进行恢复;属性值为3,说明如果在tomcat接到请求后出现失败状况或者在tomcat发送http头给客户端后出现失败状况,则不进行恢复。

此属性在jk 1.2.6版本被增加进来,以求避免tomcat的死机和在支持ajp13的servlet引擎上发生的问题。此属性默认为全部恢复。

例如:一个名为“worker2”的worker的配置:


worker.worker2.host=www2.x.comworker.worker2.port=8009worker.worker2.lbfactor=3.5worker.worker2.cachesize=10worker.worker2.cache_timeout=600worker.worker2.socket_keepalive=1worker "worker2" want ajp13connection to be dropped after 5mn (timeout)worker.worker2.socket_timeout=300
 



说明:上例中的worker要求操作系统在连接上发送keep-alive信号。

注意:在ajpv13协议中默认端口为8009。

4.设置lb worker属性:

负载平衡类型的worker并不与tomcat worker通讯,它负责管理这些tomcat worker。

其管理范围如下:

* 初始化在web server的worker列表中定义的worker。

* 使用worker的负载平衡权值,执行基于权值的负载平衡,将数量多的请求发送到负载平衡权值高(在web server看来就是更加健壮的)的worker。

* 维护在同一个tomcat worker上的同一个session的请求,使其发送到同一个tomcat worker上。以达到tomcat worker上的session一致性、持续性。

* 标识已经失败的tomcat workers,悬空发向它们的请求,在被lb worker管理的其它workers上寻找可以失败恢复的worker。

被同一个lb worker管理多个worker之间的负载平衡的(基于它们的lbfactor和当前用户session),也可以尽量避免由于单一的tomcat进程死掉而造成这个网站被“杀”的不良反应。

下表说明了lb worker接受的属性:

* balanced_workers:一个由“,”分割的worker列表,用来声明lb worker需要被管理的workers。这些workers不应出现在worker.list属性中。

* sticky_session:表述是否将对session id的请求路由回到相同的tomcat worker。如果属性值不为0,它将被设置为jk_true,session将是粘性的,即session id的请求路由回到相同的tomcat worker;当tomcat正使用能够跨越多个tomcat实例持久化session数据的session manager时,它将被设置为jk_false。属性默认值为jk_true。

例如:worker balance1管理着两个workers:worker1、worker2:

worker.balance1.balanced_workers=worker1, worker2

5.高级lb worker属性:

jk 1.2.x版本通过增加两个新的属性:local_worker_only 和 local_worker 为lb worker增添了新的负载平衡和容错支持。

下面让我们举一个实际的环境作为example:

一个集群具有两个节点(worker1+worker2),一个web server与tomcat workers一前一后,一个负载平衡器(lb worker)位于节点的前面、web server的后面。

配置如下:



worker.list=router# define a "local_worker" worker using ajp13worker.worker1.port=8009worker.worker1.host=node1.domain.orgworker.worker1.type=ajp13worker.worker1.lbfactor=1worker.worker1.local_worker=1#define another "local_worker" worker using ajp13worker.worker2.port=8009worker.worker2.host=node2.domain.orgworker.worker2.type=ajp13worker.worker2.lbfactor=1worker.worker2.local_worker=0# define the lb workerworker.router.type=lbworker.router.balanced_workers=worker1,worker2worker.router.local_worker_only=1
 



在worker1和worker2上的local_worker标志告诉lb_worker哪个连接属于本地worker。

如果local_worker值为非0,则它将被设置为jk_true,用来标记“local worker”,而jk_false的情况则相反。如果至少一个worker被标记为local worker,则lb_worker将工作于local worker模式。这种模式下,所有的local workers将被移到在lb_worker中的内部worker列表的头部。

这意味着一个带有session id的请求到达lb_worker时,相应的worker(根据权值排序,权值最大的那个worker)将被确定作为此请求的接受/处理者。如果这个 worker死掉/当机,请求将被发送到处于非错误状态的第一个local worker;如果一个没有session id的请求到达lb_worker时,此请求将被路由到第一个local worker。

如果所有的local worker均处于错误状态,则这时“local_worker_only”标志显得尤其重要。如果local_worker_only的属性值为非0,则它被设置为 jk_true,否则被设置为 jk_false。

当它被设置为 jk_true时,这个没有session id的请求将得到一个错误作为回应,否则lb_worker将尝试将请求路由到其它的被管理的worker上。如果其中的一个worker处于错误状态,并且恢复会话的工作并没有任何改变,local worker将查找这个没有session id的请求(因为在local worker中保存有这个请求的session),而其它的worker只能查找带有session id的请求。

注意:local_worker默认值是0,local_worker_only默认值也是0。




例如:设置“wrkjni”的jvm shared lib (ibm sdk on linux)。

worker.wrkjni.jvm_lib=/opt/ibmjava2-131/jre/bin/classic/libjvm.so

例如:设置“wrkjni”的jvm shared lib (sun sdk on windows)。

worker.wrkjni.jvm_lib=c:\jdk\1.3.1\jre\bin\classic

worker.worker名.stdout:设置jvm写它的system.out的完整路径位置。

例如:将“wrkjni”的jvm系统输出路径设置为/var/log/http/jk-jvm-out.log。

worker.wrkjni.stdout=/var/log/http/jk-jvm-out.log

worker.worker名.stderr:设置jvm写它的system.err的完整路径位置。

例如:将“wrkjni”的jvm系统错误输出路径设置为/var/log/http/jk-jvm-err.log

worker.wrkjni.stderr=/var/log/http/jk-jvm-out.log

worker.worker名.ms:设置jvm的初始堆大小。

例如:设置“wrkjni”的jvm的初始堆为64m。

worker.wrkjni.ms=64

worker.worker名.mx:设置jvm的最大的堆大小。

例如:设置“wrkjni”的jvm堆最大为128m

worker.wrkjni.mx=128

worker.worker名.sysprops:设置jvm的系统属性。

例如:设置“wrkjni”的jvm使用法语。

worker.wrkjni.sysprops=-duser.region=fr

worker.worker名.ld_path:设置附加的动态链接库路径(类似于ld_library_path)

例如:添加一些动态链接库路径到“wrkjni”的java环境中。

worker.wrkjni.ld_path=/opt/ibmjava2-131/jre/bin/worker.wrkjni.ld_path=/opt/ibmjava2-131/jre/bin/classic

注意:在linux下,上面的ld_path并不能更新ld_library_path,所以需要在执行web server之前手动更新ld_library_path,。

8.属性文件宏:

我们可以在属性文件中定义“宏”。这些宏让我们定义属性,并在以后使用它们来构建其它的属性文件。当我们修改java home、tomcat home、系统路径分隔符时这是很有用的。

例如:定义了属性workers.tomcat_home、workers.java_home。

workers.tomcat_home=d:\tomcatworkers.java_home=d:\sdk\jdk1.2.2

在定义worker.inprocess.class_path时就可以使用前面定义的workers.tomcat_home。

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes

9.一个简单而完整的worker.properties:

文件中定义了比较完整的结构,可以做为参考模版:

* 一个位于localhost的使用8007端口的ajp12 worker;

* 一个位于localhost的使用8008端口的ajp13 worker;

* 一个jni worker;

* 一个lb worker:负责ajp12 worker、ajp13 workers的负载平衡。

文件内容如下:


# define some propertiesworkers.apache_log=/var/log/httpd/workers.tomcat_home=/var/tomcat3workers.java_home=/opt/ibmjava2-131/ps=/# define 4 workers, 3 real workers using ajp12, ajp13, jni, the last one being a loadbalancing workerworker.list=worker1,worker2, worker3, worker4# set properties for worker1 (ajp12)worker.worker1.type=ajp12worker.worker1.host=locahostworker.worker1.port=8007worker.worker1.lbfactor=5# set properties for worker2 (ajp13)worker.worker2.type=ajp13worker.worker2.host=locahostworker.worker2.port=8009worker.worker2.lbfactor=50worker.worker2.cachesize=10worker.worker2.cache_timeout=600worker.worker2.socket_keepalive=1worker.worker2.socket_timeout=300# set properties for worker3 (jni)worker.worker3.type=jni# set worker3 bridge type, here tomcat 3.3worker.worker3.bridge=tomcat33# set worker3 classpathworker.worker3.class_path=$(workers.tomcat_home)$(ps)classesworker.worker3.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar# setworker3 tomcat command lineworker.worker3.cmd_line=-homeworker.worker3.cmd_line=$(workers.tomcat_home)# set worker3 tomcat/jvm settingsworker.worker3.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)libjvm.soworker.worker3.stdout=$(workers.apache_log)$(ps)inprocess.stdoutworker.worker3.stderr=$(workers.apache_log)$(ps)inprocess.stderrworker.worker3.sysprops=tomcat.home=$(workers.tomcat_home)# set properties for worker4 (lb) which use worker1 and worker2worker.worker4.balanced_workers=worker1,worker2
 

 

source:http://blog.chinaunix.net/space.php?uid=17085332&do=blog&id=2832063