Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I've been giving this thing a try for the last 3 hours and nothing. I need to drop a new war and have tomcat autodeploy it. It is not happening. Here is my simplified configuration:

server.xml

<Engine name="Catalina" defaultHost="localhost">
  <Host name="something.com" appBase="/var/www/something.com/webapps"
        unpackWARs="false" autoDeploy="true" 
        xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="application.war" debug="0" reloadable="true">
      ... some realm and data source stuff here
    </Context>
  </Host>
</Engine>

When I start tomcat everything works great. I have tried two approaches:

  1. Copy a new war using scp in the location.
  2. Touching /var/www/something.com/webapps/application.war.

In both cases I can see catalina.err with the same message:

INFO: Undeploying context [/application]

Without a corresponding

INFO: Deploying web application archive application.war

which I get when I restart tomcat. I have a feeling this is because it is not inside the CATALINA_BASE/webapps but don't know how to proceed. Any help?

share|improve this question

3 Answers 3

It could be a number of things. Some specific issues I've hit:

(1) File permissions. Make sure the webapps directory, your work directory, the war itself, and any special files it accesses are all readable/writeable by the user running Tomcat (ideally they should be owned by that user).

(2) The previous version isn't fully removed. Try stopping Tomcat, deleting the war and matching folder, copying the new war in, then starting Tomcat. If it works then, the problem might be left over files. (I have an app for example that doesn't completely clean itself up).

(3) The app might not be initializing properly due to issues with the app. If the war deploys automatically into a folder, autodeploy is working, but the app didn't fully initialize. Look for log messages. Depending on your app, this might be in tomcat/logs, the current directory, or standard out. If you can, change the log properties (e.g. log4j.properties file) to show debug level messages.

(4) Permgen mememory problems. When you reload an app in Tomcat, it uses up Permgen memory. By definition, this can't be recovered. Reload too much, and Tomcat will crash with an out-of-memory error (you can usually see this in your logs). Either configure more permgen, or better yet, shut off/restart Tomcat when redeploying an app.

http://wiki.apache.org/tomcat/OutOfMemory

share|improve this answer

I think the culprit is the unpackWARs="false"

From a recent posting on stackoverflow, it was found that unpackWARs="false" causes the new version of the WAR is not detected. Any specific reason it is false?

share|improve this answer
    
I'm not unpacking so that I don't have to deal with another directory full of files. Will try with the unpackWARs="true" to see if that helps. In any case, when the new war is detected, is the previous contents of the unpacked directory erased and replace? Can files be left over from the previous war? –  rmarimon Oct 25 '10 at 14:53
    
@rmarimon: yes, i'm not sure what happens to any deleted JSPs etc from a previous exploded war. –  JoseK Oct 26 '10 at 8:06

Shouldn't it be docBase="application" not docBase="application.war"? If I understand correctly this will cause Tomcat to first look for a folder /var/www/something.com/webapps/application/ and if that doesn't exist look for /var/www/something.com/webapps/application.war

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.