Raible's Wiki
Raible Designs AppFuseHomepage- Korean - Chinese - Italian - Japanese QuickStart Guide User Guide Tutorials Other ApplicationsStruts ResumeSecurity Example Struts Menu
Set your name in
UserPreferences
Referenced by
JSPWiki v2.2.33
Hide Menu |
This is version 6.
It is not the current version, and thus it cannot be edited. I've been told I should use Tomcat's Ant Tasks (install, list, refresh, remove) in AppFuse to ease deployment of the app. So I tried that today (June 24, 2003). Here's how I set it up and what I found. I hope to use this page to get a consensus on how these tasks should be used. 1. First, I defined a tomcat.classpath for the catalina-ant.jar file. Putting in in $ANT_HOME/lib did not work - and this way seemed cleaner. So in properties.xml, I added: <!-- For Tomcat Tasks --> <path id="tomcat.classpath"> <fileset dir="${tomcat.home}/server/lib" includes="catalina-ant.jar" /> </path>2. Then in build.xml, I define the tasks in the "define-tasks" target: <!-- Tomcat Tasks --> <taskdef name="install" classname="org.apache.catalina.ant.InstallTask" classpathref="tomcat.classpath" /> <taskdef name="list" classname="org.apache.catalina.ant.ListTask" classpathref="tomcat.classpath" /> <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask" classpathref="tomcat.classpath" /> <taskdef name="remove" classname="org.apache.catalina.ant.RemoveTask" classpathref="tomcat.classpath" />3. Then I created targets for each one of these tasks: <!-- =================================================================== --> <!-- install, list, reload and remove are all Tomcat deployment targets. --> <!-- =================================================================== --> <target name="install" depends="package-web" description="Install application to servlet container"> <install url="${tomcat.manager.url}" username="${tomcat.username}" password="${tomcat.password}" path="/${webapp.name}" war="file://${webapp.dist}/${webapp.war}"/> </target> <target name="list" depends="define-tasks" description="List installed applications on servlet container"> <list url="${tomcat.manager.url}" username="${tomcat.username}" password="${tomcat.password}" /> </target> <target name="refresh" depends="package-web" description="Reload application on servlet container"> <reload url="${tomcat.manager.url}" username="${tomcat.username}" password="${tomcat.password}" path="/${webapp.name}"/> </target> <target name="remove" depends="define-tasks" description="Remove application on servlet container"> <remove url="${tomcat.manager.url}" username="${tomcat.username}" password="${tomcat.password}" path="/${webapp.name}"/> </target>NOTE: I used "refresh" as a target name since I already have a "reload" task that stops tomcat, undeploys, cleans and redeploys. 4. My understanding is that I should be able to point the install and refresh tasks at the .war file for my app, and it'll install/reload as requested. The list and remove tasks work fine at this point. My Issues:Install: Doesn't work. I get the good ol' java.sql.SQLException: Cannot load JDBC driver class 'null'. Everything looks fine from the Ant side though:[install] OK - Installed application at context path /appfuseIf I restart Tomcat, everything starts and loads just fine. Remove: Doesn't seem to work, but it actually does. Here's what Ant reports: [remove] FAIL - Encountered exception java.io.IOException: java.lang.NullPointerException If I run the same task again, I get: [remove] FAIL - No context exists for path /appfuseProving that it actually did work the first time. Reload: Doesn't work: [reload] FAIL - Reload not supported on WAR deployed at path /cctEven though my context has reloadable="true" My Thoughts
Attachments:
|