TomC@ TomC@ - Die Internetseite
 
 
 

TomC@ - HowTo's

PDF
PDF

Tomcat Management mit Ant

Peter Roßbach
Die Manager Anwendung kann nicht nur interaktive genutzt werden, sondern ist auch dazu geeignet direkt via Ant Skripten genutzt zu werden. Zwar gibt es ein hilfreiche Manager Dokumentation, aber eine Anleitung des direkten Einsatzes gibt es bisher nur im Tomcat 4X Buch. für den Tomcat 4. Im Mai 2004 wird die hier beschrieben Technik hoffentlich dann auf im Tomcat 5 Release vorhanden sein.

Installation

Bisher gibt es im Tomcat keine geschlossene Definition der Ant Task und ein Masterskript für das Deployment wird so schnell etwas lang. Die folgende Beschreibung hilft Ihnen hoffentlich schneller automatischen Aktionen mit Ihrem Tomcat durchzuführen.

catalina-ant-properties

Alle benötigten Ant-Task für das aktuelle Deployment werden in einer Mapping Datei catalina-ant.properties zusammengefaßt. Diese Datei wird dann in das Verzeichnis $CATALINA.HOME/conf kopiert.

list=org.apache.catalina.ant.ListTask
deploy=org.apache.catalina.ant.DeployTask
undeploy=org.apache.catalina.ant.UndeployTask
start=org.apache.catalina.ant.StartTask
stop=org.apache.catalina.ant.StopTask
reload=org.apache.catalina.ant.ReloadTask
Note
Im Tomcat Release gibt es noch mehr Ant Task diese werden aber nicht für das Deployment das hier gezeigt wird benötigt.

Definition der Properities

# Properties for Tomcat Server
catalina.home=_PATH_TO_TOMCAT_RELEASE_
catalina.manager.server=localhost
catalina.manager.url=http://${catalina.manager.server}:7380/manager
catalina.manager.username=manager
catalina.manager.password=tomcat     

Das Skript tomadmin.xml statt dem jetzigen Fragments

<?xml version="1.0" encoding="ISO-8859-1"?>

<project name="TomC@ Tomcat Manager" 
            default="list"
	    basedir=".">
    <property name="deploytarget" value=""/>
    <property file="manager${deploytarget}.properties"/>

    <path id="catalina_ant.path">
        <fileset dir="${catalina.home}/server/lib">
            <include name="catalina-ant.jar"/>
        </fileset>
    </path>
    <taskdef file="${catalina.home}/conf/catalina-ant.properties" 
             classpathref="catalina_ant.path"/>

    <target name="list" 
            description="List installed applications on servlet container">
        <list 
	   url="${catalina.manager.url}" 
	   username="${catalina.manager.username}"
	   password="${catalina.manager.password}"/>
    </target>
    
    <target name="deployremote" 
            description="Install application to servlet container">
        <echo message="ant dir:  ${basedir}"/>
        <echo message="app path: ${app.path}"/>
        <echo message="app home: ${app.home}"/>
        <deploy 
	    url="${catalina.manager.url}"
	    username="${catalina.manager.username}" 
            password="${catalina.manager.password}" 
            path="${app.path}"
	    war="file:${app.home}"
	    update="true"/>
    </target>
    <target name="deploylocal" 
            description="Install application to servlet container">
        <echo message="ant dir:     ${basedir}"/>
        <echo message="ant context: ${app.context}"/>
        <echo message="app path:    ${app.path}"/>
        <echo message="app home:    ${app.home}"/>
        <deploy 
	    url="${catalina.manager.url}"
	    username="${catalina.manager.username}" 
            password="${catalina.manager.password}" 
            path="${app.path}"
            localWar="file:${app.home}" 
            config="file:${app.context}"
            update="true"/>
    </target>
    <target name="reload" 
            description="Reload application on servlet container">
        <echo message="app path:    ${app.path}"/>
        <reload 
	    url="${catalina.manager.url}"
	    username="${catalina.manager.username}" 
            password="${catalina.manager.password}" 
            path="${app.path}"/>
    </target>
    <target name="undeploy"
            description="Remove application on servlet container">
        <echo message="app path:    ${app.path}"/>
        <undeploy 
	    url="${catalina.manager.url}"
	    username="${catalina.manager.username}" 
            password="${catalina.manager.password}" 
            path="${app.path}"/>
    </target>
    <target name="start" 
            description="start application on servlet container">
        <echo message="app path:    ${app.path}"/>
        <start 
	    url="${catalina.manager.url}"
	    username="${catalina.manager.username}" 
            password="${catalina.manager.password}" 
            path="${app.path}"/>
    </target>
    <target name="stop" 
            description="Stop application on servlet container">
        <echo message="app path:    ${app.path}"/>
        <stop 
	    url="${catalina.manager.url}"
	    username="${catalina.manager.username}" 
            password="${catalina.manager.password}" 
            path="${app.path}"/>
    </target>
    
</project>
            

Beispiel

Beispiel der Anwendung mit Ausgabe... Verschiedene properties Datei und schon geht das Deployment leicht vor der Hand.

  • Deploy auf den Produktionsserver:ant -Ddeploytarget=PROD deploy

Verwendung in anderen Skripten

Verwendung in anderen Build Skripten Beispiel und

     ...
     <property name="app.name" value="myapp"/>
     <property name="app.path" value="/${app.name}" />
     <property name="app.home" value="build/${app.name}.war" />
     <property name="app.context" value="cond/${app.name}.xml" />
     ...
     <target name="deploy" description="deploy app">
        <ant antfile="tommanager.xml" target="deployremote">
             <property name="app.path" value="${app.path}" />
             <property name="app.home" value="${basedir}/${app.home}" />
             <property name="app.context" value="${app.context}" />
        </ant>
    </target>

    <target name="undeploy">
        <ant antfile="tommanager.xml" target="undeploy">
             <property name="app.path" value="${app.path}" />
        </ant>
    </target>

    <target name="list">
        <ant antfile="tommanager.xml" target="list">
             <property name="app.path" value="${app.path}" />
        </ant>
    </target>

    <target name="remove">
        <ant antfile="tommanager.xml" target="remove">
             <property name="app.path" value="${app.path}" />
        </ant>
    </target>
    ...

by Peter Roßbach