Announcement

Collapse
No announcement yet.

Tomcat 5.5.9 - Autodeployment - Context.xml ?!?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tomcat 5.5.9 - Autodeployment - Context.xml ?!?

    Hallo,

    ich habe folgendes Problem, ich wickle gerade mit ein paar Freunden ein kleines Tomcat Projekt (Struts, Spring, Hibernate) ab.<br><br>

    Wir haben eine nette Projekt-Struktur auf Basis ANT aufgebaut, und soweit läuft alles problemlos.<br><br>

    Einzig das Deployment der Application im Development Zyklus macht Probleme (WinXP, Tomcat 5.5.9, JDK 5.x, Eclipse 3.1):<br><br>

    a)
    wenn wir ein .war File bauen und dieses via manager deployen funktioniert beim 1x alles problemlos, beim 2x beschwert sich tomcat, dass ein .war mit diesem Namen schon existiert?<br><br>

    ausserdem wird dabei das entsprechende context.xml (=applicationName.xml in /conf/Catalina/localhost/) überschrieben<br><br>

    Jetzt haben ich in der Doku nachgelesen und da steht, das man als letzten Punkt das context.xml auch im META-INF ablegen kann<br><br>

    das funktioniert aber bei mir auch nicht ... ?!?<br><br>

    b)
    wenn wir ein .war File bauen und dieses via copy/ftp deployen wird es zwar hotdeployed, aber das context.xml ist ebenfalls immer weg/überschrieben<br><br>

    Derzeit ist der einzige Lösungsweg, der halbwegs funktioniert:<br><br>

    - TomCat runterfahren<br>
    - webapps/<application-dir> löschen<br>
    - webapps/<application.war> löschen<br>
    - work/.../<application-dir> löschen<br>
    - .war kopieren<br>
    - context.xml kopieren<br>
    - TomCat hochfahren <br><br>

    Das muss doch irgendwie besser gehen ... oder?<br><br>

    irgendwie werde ich aus der Doku zum Deployprozess nicht ganz schlau!<br><br>

    Any Hints/Comments are welcome!<br><br>

    Thx<br>
    K

  • #2
    Du kannst dem Ant-Task deine editierte Context.xml übergeben, diese wird umbenannt in webappname.xml und bei deploy nach
    <i>$CATALINA_HOME/conf/Catalina/localhost</i> verschoben.
    z.b. so:

    <code>
    &lt;target name="create-war" description="creates a webapplication archive file"&gt;
    &lt;war destfile="${dist}/${context-path}.war" webxml="${meta}/web.xml"&gt;
    &lt;classes dir="${build}"/&gt;
    &lt;lib dir="${lib}"/&gt;
    &lt;fileset dir="${web}"/&gt;
    &lt;metainf file="${meta}/<b>context.xml</b>"/&gt;
    &lt;webinf dir="${webinf}"/&gt;
    &lt;/war&gt;
    &lt;/target&gt;
    </code>

    zu dem Problem mit dem redeploy....
    könntet ihr z.b. die beiden Ant-Tasks
    <code>
    &lt;taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" /&gt;
    &lt;taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" /&gt;
    </code>
    benutzen, jedoch sollte vor dem Aufruf des Undeploy Tasks überprüft werden ob die app bereits deployed worden ist.

    gruß Simo

    Comment


    • #3
      Der deploy Task besitzt ein update Attribute mit dem auch eine bestehende Anwendung weiderholt deployed werden kann.

      &lt;target name="deployremote" description="Install application to servlet container"&gt;
      &lt;deploy url="${manager.url}"
      username="${manager.username}"
      password="${manager.password}"
      path="${app.path}"
      war="file:${app.home}"
      update="true"/&gt;
      &lt;/target&gt;

      Mit dieser deploy Methode wird auch die META-INF/context.xml genutzt. Im Tomcat 5.5 sollte in der context.xml die Attribtue path und docBase nicht vorhanden sein

      Comment

      Working...
      X