• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Servlet Path and Context Path Differences

 
Ranch Hand
Posts: 52
  • Number of slices to send:
    Optional 'thank-you' note:
Hi,

i am trying to understand what is a servlet path and context path. whether both would differ and looking for an example to understand

can someone through some insight on this subject

thanks
 
Saloon Keeper
Posts: 15625
366
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
Right now I'm too lazy to find out if "servlet path" has a well defined meaning, so my explanation below stems from what I know from the top of my head.

"Context path" refers to the path of the URL that refers to the root of your application. Usually, this path is equal to the name of your WAR file.

"Servlet path" refers to a path that refers a specific servlet within your application. These paths are usually configured in the web.xml file of your application.

Here is an example:

/myapplication is the context path, and /myservlet is the (relative) servlet path.
 
Saloon Keeper
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:
"Servlet path" is a Spring thing and offhand, I cannot remember what is is good for. I DON'T thing it is related to "servlet mapping", which is how a given context URL path is mapped to a servlet class, but like Stephan, I'm too lazy to check.

For beginners who deploy by simply dumping a WAR into the TOMCAT_HOME/webapps directory,  the context path will be the same as the WAR name. If you put a Context file in the TOMCAT_HOME/conf/Catalina/localhost* directory, the context path will be the name of that Context file (less the "xml" extension).

There is also a contextPath attribute for Context, but it gets overridden by file naming. I'm not actually sure when it gets used, in fact, and I am also too lazy for that.

Plus Ian is due here in about 4 hours and power is getting to be a bit unpredictable.

---
*This assumes you aren't using a VirtualHost, since the hostname determines the actual directory path.
 
Sheriff
Posts: 67748
173
  • Number of slices to send:
    Optional 'thank-you' note:

Tim Holloway wrote:"Servlet path" is a Spring thing


Not correct, servlet path is part of the Servlet Spec.

And Stefan is correct in that it is the portion of the URL that maps the request to a specific servlet.
 
Joseph Sam
Ranch Hand
Posts: 52
  • Number of slices to send:
    Optional 'thank-you' note:
Thanks for all the replies.
 
Tim Holloway
Saloon Keeper
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:

Bear Bibeault wrote:

Tim Holloway wrote:"Servlet path" is a Spring thing


Not correct, servlet path is part of the Servlet Spec.



OK. The issue there is that I think there's a Spring/Spring Boot "servlet.path" config property that doesn't seem to fit that usage and it's currently under discussion in another thread. So I've got my wires crossed.

I tend to simply call the "servlet-mapping" web.xml element the "servlet URL mapping" and its associated logical servlet name/class itself. The term "servlet path" may be in the spec, but isn't literally used in web.xml.
 
Stephan van Hulst
Saloon Keeper
Posts: 15625
366
  • Number of slices to send:
    Optional 'thank-you' note:

Tim Holloway wrote:There is also a contextPath attribute for Context, but it gets overridden by file naming. I'm not actually sure when it gets used, in fact, and I am also too lazy for that.


That would be the 'path' attribute. Within Tomcat, you would only use it when you're defining a static context in the server.xml configuration file. I can't think of any good use cases for that.

However, when you add the path attribute to a context.xml file of an application, NetBeans will use it to determine how to deploy the application to Tomcat, which can be useful if you want your context path to be different from the name of the WAR file that is being deployed.
 
Tim Holloway
Saloon Keeper
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:
Ah, I am enlightened. Hadn't thought of that, since, after all, putting Context elements in the server.xml file these days can get you shunned from polite society.

Is your Netbeans quirk using the META-INF/context.xml file of a Tomcat project, or is it using a file from somewhere else in the project? I'm accustomed to manually copying my context file to the server's Catalina/localhost directory. If Eclipse can do that it's probably part of the plugin that I avoid.
 
Stephan van Hulst
Saloon Keeper
Posts: 15625
366
  • Number of slices to send:
    Optional 'thank-you' note:

Tim Holloway wrote:Is your Netbeans quirk using the META-INF/context.xml file of a Tomcat project, or is it using a file from somewhere else in the project?


It uses META-INF/context.xml.

When NetBeans deploys the application to Tomcat, it doesn't actually copy the WAR to the webapps folder, it only copies the META-INF/context.xml file to the conf/Catalina/localhost/ directory and renames it so that its name matches the context path attribute. It also sets the docBase attribute so that it refers to the (exploded) WAR in your project's build directory.
 
Tim Holloway
Saloon Keeper
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:
Hmmm. Dangit, you made me RTFM!

tomcat.apache.org wrote:
Individual Context elements may be explicitly defined:
   In an individual file at /META-INF/context.xml inside the application files. Optionally (based on the Host's copyXML attribute) this may be copied to $CATALINA_BASE/conf/[enginename]/[hostname]/ and renamed to application's base file name plus a ".xml" extension.
   In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take precedence over any context.xml file packaged in the web application's META-INF directory.
   Inside a Host element in the main conf/server.xml.


So it's not Netbeans doing this, It's Tomcat itself. Note that both the exploding/non-exploding of WARs and the copyXML feature are configurable server options. I have often chosen to put my WAR in a non-traditional read-only location (such as /opt/com/mousetech/webapps/app001.war) and not explode them, in fact. Although if performance is critical, I've been lead to suspect that explosion may be more performant. Have no hard numbers on that, though.
 
Stephan van Hulst
Saloon Keeper
Posts: 15625
366
  • Number of slices to send:
    Optional 'thank-you' note:
Huh, I always assumed it was NetBeans doing that. So it could be that NetBeans calls a Tomcat command that deploys the context.xml file?
 
Tim Holloway
Saloon Keeper
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:
Essentially. I've not used NetBeans like that, but if it's anything like IntelliJ, the IDE launches a Tomcat instance and deploys the project WAR into it, whereupon Tomcat will handle the context.xml file in the normal (documented) way as part of standard deployment.

I live a different life, where while developing I manually create a Context xml file, dump it under the desired context path name manually into a copy of TOMCAT_HOME/conf/Catalina/localhost, and the docBase points to the WAR being built in my Eclipse/Maven target directory. But that's me and I hate WTP because it doesn't accurately reflect my entire runtime configuration. I'm using the plugin Once Known As "sysdeo" to run my Tomcat, instead.

One of the reasons I generally use Eclipse is, in fact, because I can launch one Tomcat running multiple webapps and debug them as they talk to each other and I'm into evil things like that. IntelliJ, last time I looked assumed that the project would be the sole running webapp, and that's fine for most people. I just happen to be extra devious.
 
Stephan van Hulst
Saloon Keeper
Posts: 15625
366
  • Number of slices to send:
    Optional 'thank-you' note:
Yeah, NetBeans also allows debugging multiple webapps in the same web server instance simultaneously. If it hadn't, I would have considered switching to a different IDE a while ago when I was working on maintenance of a collection of web services for one of our customers.
 
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |