Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deployment of war file on Tomcat

Is there a way to deploy a given war file on Tomcat server? I want to do this without using the web interface.

like image 773
Milhous Avatar asked Sep 27 '08 00:09

Milhous


People also ask

What happens when we deploy a WAR file in Tomcat?

Java web applications are usually packaged as WAR files for deployment. These files can be created on the command line or with an IDE, like Eclipse. After deploying the WAR file, Tomcat unpacks it and stores all the project files from the webapps directory in a new directory named after the project.

In which directory WAR file is deployed in Tomcat?

war file. Paste the files in the following location: For Tomcat, <User install directory>\apache-tomcat-9.0. 33\webapps .


2 Answers

There are several ways to deploy a Tomcat webapp:

  • Dropping into $CATALINA_HOME/webapps, as was already mentioned.
  • Using your build scripts to deploy automatically via the manager interface (that comes with Tomcat). Here are the two ways
    • for Maven: use the tomcat plugin. You don't need to include it in pom.xml, just issue the goal mvn tomcat:deploy, the plugin is included in Maven 2. This assumes several defaults explained in the documentation, you can configure the behaviour in the pom.xml. There are other goals that let you deploy as an exploded archive etc.
    • for Ant: something like this:
    <property name="manager.url"   value="http://localhost:8080/manager"/>
    <property name="manager.username" value="manager"/>
    <property name="manager.password" value="foobar"/>
    <!-- Task definitions -->
    <taskdef name="deploy"   classname="org.apache.catalina.ant.DeployTask"/>
    <taskdef name="list"     classname="org.apache.catalina.ant.ListTask"/>
    <taskdef name="reload"   classname="org.apache.catalina.ant.ReloadTask"/>
    <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>
    <!-- goals -->
    <target name="install" depends="compile" description="Install application to servlet container">
        <deploy url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"
                path="${app.path}"
                localWar="file://${build.home}"/>
    </target>
    <target name="list" description="List installed applications on servlet container">
        <list    url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"/>
    </target>
    <target name="reload" depends="compile" description="Reload application on servlet container">
        <reload url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"
                path="${app.path}"/>
    </target>
    <target name="remove" description="Remove application on servlet container">
        <undeploy url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"
                path="${app.path}"/>
    </target>

All of those will require you to have a Tomcat user configuration. It lives $CATALINA_BASE/conf/tomcat-users.xml, but since you know already how to use the web interface, I assume you know how to configure the users and passwords.

like image 104
Aleksandar Dimitrov Avatar answered Sep 23 '22 19:09

Aleksandar Dimitrov


Just copy the war file into the $TOMCAT_HOME/webapps/ directory. Tomcat will deploy the war file by automatically exploding it. FYI - If you want you can make updates directly to the exploded directory, which is useful for development.

like image 44
Joe Dean Avatar answered Sep 24 '22 19:09

Joe Dean