状态工作器 Ant 任务

简介

从 1.2.19 版本开始,JK 版本包含其他 ant 任务。它们可用于通过特殊状态工作器管理 JK Web 服务器插件。

使用远程 Ant 任务管理 JK

简单的 antlib 集成

<?xml version="1.0" encoding="UTF-8"?>

<project name="modjk-status" 
         xmlns:jk="urn:org-apache-jk-status"
         default="status" basedir=".">

	<property name="profile" value=""/>
	<property file="jkstatus${profile}.properties"/>
	<property file="jkstatus.properties.default"/>

    <path id="jkstatus.classpath">
      <fileset dir="${catalina.home}/bin">
          <include name="commons-logging-api-*.jar"/>
      </fileset>
      <pathelement location="${catalina.home}/server/lib/catalina-ant.jar"/>
      <pathelement location="../dist/tomcat-jkstatus-ant.jar"/>
      <pathelement location="${catalina.home}/server/lib/tomcat-util.jar"/>
    </path>

    <typedef resource="org/apache/jk/status/antlib.xml"       
           uri="urn:org-apache-jk-status" classpathref="jkstatus.classpath"/> 
           
    <target name="status" >       
 	    <jk:status url="${jkstatus.url}" 
	                username="${jkstatus.username}"
	                password="${jkstatus.password}"
	                resultproperty="worker"
	      	        echo="off"
	                failOnError="off"/>
	    <echoproperties prefix="worker" />
    </target>
</project>    

测试结果

[echoproperties] #Ant properties
[echoproperties] #Sun Dec 10 20:40:21 CET 2006
[echoproperties] worker.node01.lbmult=1
[echoproperties] worker.loadbalancer.lock=Optimistic
[echoproperties] worker.node02.transferred=0
[echoproperties] worker.loadbalancer.sticky_session=false
[echoproperties] worker.node01.distance=0
[echoproperties] worker.node01.client_errors=0
[echoproperties] worker.node02.lbmult=1
[echoproperties] worker.node01.port=7309
[echoproperties] worker.node01.elected=0
[echoproperties] worker.loadbalancer.good=2
[echoproperties] worker.loadbalancer.method=Sessions
[echoproperties] worker.server.port=2090
[echoproperties] worker.loadbalancer.map.2.type=Wildchar
[echoproperties] worker.node02.route=node02
[echoproperties] worker.node01.route=node01
[echoproperties] worker.node01.lbvalue=0
[echoproperties] worker.node01.lbfactor=1
[echoproperties] worker.node01.max_busy=0
[echoproperties] worker.node01.busy=0
[echoproperties] worker.node01.redirect=
[echoproperties] worker.node02.distance=0
[echoproperties] worker.loadbalancer.name=loadbalancer
[echoproperties] worker.loadbalancer.sticky_session_force=false
[echoproperties] worker.node02.state=N/A
[echoproperties] worker.node01.state=N/A
[echoproperties] worker.node01.transferred=0
[echoproperties] worker.loadbalancer.map.length=2
[echoproperties] worker.node01.type=ajp13
[echoproperties] worker.node01.address=127.0.0.1\:7309
[echoproperties] worker.result.type=OK
[echoproperties] worker.loadbalancer.member_count=2
[echoproperties] worker.loadbalancer.map_count=2
[echoproperties] worker.loadbalancer.mtime_to_maintenance_min=12
[echoproperties] worker.loadbalancer.mtime_to_maintenance_max=75
[echoproperties] worker.node02.lbfactor=1
[echoproperties] worker.node02.max_busy=0
[echoproperties] worker.jk_version=mod_jk/1.2.21-dev
[echoproperties] worker.loadbalancer.bad=0
[echoproperties] worker.node02.redirect=
[echoproperties] worker.node01.host=localhost
[echoproperties] worker.node02.activation=ACT
[echoproperties] worker.loadbalancer.map.1.source=JkMount
[echoproperties] worker.loadbalancer.retries=2
[echoproperties] worker.node02.elected=0
[echoproperties] worker.loadbalancer.map.2.source=JkMount
[echoproperties] worker.node02.port=7409
[echoproperties] worker.loadbalancer.length=2
[echoproperties] worker.node02.lbvalue=0
[echoproperties] worker.loadbalancer.degraded=0
[echoproperties] worker.loadbalancer.map.1.type=Wildchar
[echoproperties] worker.loadbalancer.map.2.uri=/myapps*
[echoproperties] worker.node02.client_errors=0
[echoproperties] worker.length=1
[echoproperties] worker.node01.domain=d20
[echoproperties] worker.loadbalancer.recover_time=60
[echoproperties] worker.server.name=localhost
[echoproperties] worker.node02.domain=
[echoproperties] worker.result.message=Action finished
[echoproperties] worker.node02.busy=0
[echoproperties] worker.node01.readed=0
[echoproperties] worker.node01.errors=0
[echoproperties] worker.node02.address=127.0.0.1\:7409
[echoproperties] worker.node02.readed=0
[echoproperties] worker.loadbalancer.busy=0
[echoproperties] worker.web_server=Apache/2.0.59 (Unix) mod_jk/1.2.21-dev
[echoproperties] worker.node02.errors=0
[echoproperties] worker.node02.type=ajp13
[echoproperties] worker.loadbalancer.map.1.uri=/ClusterTest*
[echoproperties] worker.node01.activation=ACT
[echoproperties] worker.loadbalancer.max_busy=0
[echoproperties] worker.loadbalancer.type=lb
[echoproperties] worker.node02.host=localhost

更新负载均衡器

<target name="updatelb" >       
<jk:updateloadbalancer url="${jkstatus.url}" 
            username="${jkstatus.username}"
            password="${jkstatus.password}"
            loadbalancer="loadbalancer"
            method="Busyness"
            retries="2"
            recoverWaitTime="60"
            lock="Optimistic"
            forceStickySession="false"
            stickySession="false"/>
</target>

更新工作器

<target name="updatew" >       
<jk:updateworker url="${jkstatus.url}" 
            username="${jkstatus.username}"
            password="${jkstatus.password}"
            loadbalancer="loadbalancer"
  	        worker="node01"
            lbfactor="2"
            activation="Active"
            redirect=""
            domain=""
            route="node01"
            distance="0"/>
</target>

重置工作器

<target name="reset" >       
<jk:reset url="${jkstatus.url}" 
            username="${jkstatus.username}"
            password="${jkstatus.password}"
            loadbalancer="loadbalancer"
  	        worker="node01"
            />
</target>