2006/5/11, Thomas Whitmore <[EMAIL PROTECTED]>:
Hi Henri,

Apparently  /conf/Catalina/localhost  is meant to represent the 'current 
deployed state' of contexts/ webapps deployed.

So it's reasonable from this understanding, that the Context specifier file is 
deleted when you undeploy the app;  the context is being removed from the 
'current state'.  Since the complete deployer rewrite in TC 5.5,  Tomcat now 
takes significant ownership of both /conf/[engine]/[host]  and /webapps.

My guess is that with the  Customer-specific app customization, that you wish 
to have the same .war deployed with different varying Context specifiers.  
(Probably different context paths for these, too?  I found huge problems with 
context paths since 5.5).  And that you want each Context specifier to be a 
separate file, for modularity.

The sensible way for Deployment to work, would be to supply a Context specifier 
file and a WAR or DocBase.  These would be placed into a location owned by the 
User (you).  You would then tell Tomcat to deploy (mount) the Context, or allow 
it to auto-deploy...

Unfortunately 5.5 seems to be a balls-up, with Tomcat auto-creating 'current 
mounted state' contexts for WARs and webapp folders it finds, auto-deleting 
webapps/ folders on undeploy or after editing 'current state' context files, 
failing to match explicit Context specifiers and thus producing spurious 
default deployments of the webapps, and with the 'Context Path' attribute 
almost completely broken.

As far as I am aware the locations to specify Contexts are, in order;  
'server.xml' as an XML element;  META-INF/context.xml inside the webapp;  or  
/conf/[engine]/[host]  directory. For deployment-specification customization 
obviously you need a Context file, independent of the webapp;  the only place 
to put this is in  /conf/[engine]/[host];  this location is most subject to the 
auto-magic working against you.

Best answer:-
-  use an Ant 'deploy' script from your Dev system
-  call Manager.Deploy  and also specify a Context xml file
-  may need to create a staging directory on the server under your control;
        so Tomcat has somewhere it can see to pick up the files;
        but safe from TC's  auto-scrubbing within /webapps
-  lastly;  Context Path specifiers, or possibly other important bits, may just 
not work  :-(


I would like to see very great clarification  in this area. (Hi guys). I think 
there is a semantic misunderstanding in failing to distinguish MOUNTING from 
DEPLOYMENT of webapps. Mounting should be Tomcat's responsibility, deploying - 
copying it to where TC can mount it or replicate it around the cluster - should 
be the User's responsibility.

This semantic error appears to have led to a (broad) range of TC behaviours in 
5.5 which are different from previous deployment concepts;  and just plain 
unlikable to developers.

Now if  MOUNTING and mounted state were kept separate from  DEPLOYMENT,  /webapps and 
deployment area would not be subject to being scrubbed &  trodden-upon like they 
currently are.  Information flows & effects would be well-defined, as opposed to 
current flows which are poorly-defined and effects which are undesirable.

Well a very welcomed approach.

The goal allow an UPDATE on an existing webapp :)

Keeping  terminology clear, information well structured, and avoiding conflation of 
ideas, are key to design of simple, robust & correct software.  Basically I'd 
say deployment in 5.5 is an example of failure in these areas.

Lastly,
  stop tramping on my /webapps directory already!

Hope you can sort out your deployment to work effectively in this version - I 
ended up using a workaround  :-(   Anyway, let me know if this helps.


Regards,
Thomas


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to