Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

tomcat 6 - how to define context root name diff than WAR file name

 
sush dod
Greenhorn
Posts: 4
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
HI guys i am using TOMCAT 6 to deploy a struts based application WAR file.
my problem is my WAR file name is aaa.0.0.1d.WAR in dev aaa.0.0.1s.WAR in stage and aaa.0.0.1p in prod environment.
for dev WAR i need to set the context root as reporting so that my request URL would be
http://localhost:8090/reporting/getReport.do
i tried creating a XML file as aaa.0.0.1d.xml and deployed in the CATALINA_HOME/conf/Catalina/localhost/ directory
and the content of the file is

<?xml version="1.0" encoding="UTF-8"?>
<!-- Context fragment for deploying the build-demo application

-->
<Context path="/reporting" docBase="..\webapps\aaa.0.0.1d.war" />

but as my WAR file name is aaa.0.0.1d.WAR i cant use above mentioned request URL.
if i use the request URL as
http://localhost:8090/aaa.0.0.1d/getReport.do then it works fine.
so in short i need to define a context root which is diffrent than my application WAR name.
can anybody tell me how can i do this?
 
Scott Selikoff
author
Saloon Keeper
Posts: 4028
18
Eclipse IDE Flex Google Web Toolkit
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
First off you should use relative path names, then you wouldn't even need to worry about what the base URL is. Second, it sounds like your configuration is wrong, the WAR name does not need to be part of the URL. Are you putting the information you want in the server config or the WEB-INF/web.xml file?
 
sush dod
Greenhorn
Posts: 4
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
no i am not writing nything in the server.xml and even in web.xml
my web.xml looks as below

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>


what do you mean by my configuration is wrong.
i can access my application using the URL
http://loalhost:8090/aaa.0.0.1d/....
can you tell me how do you set the relative path in the application specific xml file?
 
Scott Selikoff
author
Saloon Keeper
Posts: 4028
18
Eclipse IDE Flex Google Web Toolkit
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by sush dod:
no i am not writing nything in the server.xml and even in web.xml


Stop right there. That's your problem. Context path is controlled by one of these files.

And in the words of a friend of mine "Not writing nything"? Ok first nothing is misspelled but even still "no i am not writing nothing" ... such bad grammar.
[ August 19, 2008: Message edited by: Scott Selikoff ]
 
Karel Vervaeke
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Scott Selikoff:

And in the words of a friend of mine "Not writing nything"? Ok first nothing is misspelled but even still "no i am not writing nothing" ... such bad grammar.
[ August 19, 2008: Message edited by: Scott Selikoff ]


The poster meant to write "anything". As a typo, "any -> ny" makes much more sense than "not -> nyt"
 
Scott Selikoff
author
Saloon Keeper
Posts: 4028
18
Eclipse IDE Flex Google Web Toolkit
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Karel, if you're going to nitpick at least provide useful information to the original poster when you do as I did.
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 65227
95
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Actually, the current accepted way to add a new context is through a context file in conf/Catalina rather than in server.xml. See the Tomcat docs.
 
Narendra shah
Ranch Hand
Posts: 52
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
sush dod wrote:HI guys i am using TOMCAT 6 to deploy a struts based application WAR file.
my problem is my WAR file name is aaa.0.0.1d.WAR in dev aaa.0.0.1s.WAR in stage and aaa.0.0.1p in prod environment.
for dev WAR i need to set the context root as reporting so that my request URL would be
http://localhost:8090/reporting/getReport.do
i tried creating a XML file as aaa.0.0.1d.xml and deployed in the CATALINA_HOME/conf/Catalina/localhost/ directory
and the content of the file is

<?xml version="1.0" encoding="UTF-8"?>
<!-- Context fragment for deploying the build-demo application

-->
<Context path="/reporting" docBase="..\webapps\aaa.0.0.1d.war" />

but as my WAR file name is aaa.0.0.1d.WAR i cant use above mentioned request URL.
if i use the request URL as
http://localhost:8090/aaa.0.0.1d/getReport.do then it works fine.
so in short i need to define a context root which is diffrent than my application WAR name.
can anybody tell me how can i do this?


If i not understood you wrong then you want to set your root web application to your default web application. meaning when you open http://localhost:8090/ then your application will be loaded. For doing this you need to just add folowing tag in server.xml tag within host tag.



refer : how to configure root application Tomcat
 
Stan Sokolov
Ranch Hand
Posts: 120
Hibernate IntelliJ IDE Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
sush dod wrote:
so in short i need to define a context root which is diffrent than my application WAR name.
can anybody tell me how can i do this?


Did you try to edit server.xml ? Put something like this at the very end


I tried it with supplied docs folder. It worked fine for me.


http://localhost:8221/ZZZ/ - this is my baby
 
suhana mathur
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Didn't adding <Context docBase="docs" path="/ZZZ" />
to server.xml deploy your application twice ? I am facing the same issue.I need the context path to be different to my WAR name.
But editing server.xml is not recommended by Tomcat and even if you do it the war is deployed twice.
 
vivek nimje
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hey, correct me if m wrong.
As per my understanding do you want to call your url as http://localhost:8101/myroot/start

where start is my servlet whose mapping in my web.xml.

Or do you need to call it like http://localhost:8101/start, which is nothing but calling the servlet without context root name.

Let me know if you want to call servlet without context root.?
 
Hemanth Mummadi
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Vivek, I am using WAS Community Edition v2.1 server. I would like to call a jsp without the context root. Can you help me out with this?
 
vivek nimje
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Hemantha,

Frankly speaking , i never tried with WAS server.
I done it on JRUN4,
Steps are :Go to Jrun4>server>Your App> Default ear>default war>web-inf>default web.xml

Inside this web.xml, make the entry of your servlet with its servlet class. in case of jsp you can make entry of your jsp.

and from here you can call your srvlet without context root.

try it!!!

Let me know if you require more details. I will try the same with WAS server once i will be free on weekends!!!
 
Etienne Olivier
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If you're under linux, an easy solution to keep war file name and choose the context-path consists in using links.

You just have to deploy your war outside of the Host's appBase and to create a link inside the appBase directory.

Ex. :


Ektor
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic