5

I am Using Spring MVC project in Tomcat Server.Each time I run the application the server context root is changed. How to set fixed context root?

My projectname is: DemoApplication, first this context root is deployed the path is, http://localhost:8080/DemoApplication

second time it is, http://localhost:8080/Controller Web.xml:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

servlet-context.xml:

<annotation-driven />
<resources mapping="/resources/**" location="/resources/" />
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <beans:property name="url"
        value="jdbc:mysql://localhost:3306/mydp" />
    <beans:property name="username" value="root" />
    <beans:property name="password" value="root" />
</beans:bean>
<beans:bean id="hibernate4AnnotatedSessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <beans:property name="dataSource" ref="dataSource" />
    <beans:property name="annotatedClasses">
        <beans:list>
             <beans:value>com.Aquatech.Model.Area</beans:value>
        </beans:list>
    </beans:property>
    <beans:property name="hibernateProperties">
        <beans:props>
            <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
            </beans:prop>
            <beans:prop key="hibernate.show_sql">false</beans:prop>
        </beans:props>
    </beans:property>
</beans:bean> 
<beans:bean id="GenericDao" class="com.Aquatech.Dao.Impl.GenericDaoImpl">
 <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory"></beans:property>
</beans:bean>
<beans:bean id="GenericserviceDao" class="com.Aquatech.ServiceDao.Impl.GenericServiceDaoImpl">
 <beans:property name="genericDao" ref="GenericDao"></beans:property>
</beans:bean>
<interceptors>
    <beans:bean id="webContentInterceptor"      class="org.springframework.web.servlet.mvc.WebContentInterceptor">
        <beans:property name="cacheSeconds" value="0" />
        <beans:property name="useExpiresHeader" value="true" />
        <beans:property name="useCacheControlHeader" value="true" />
        <beans:property name="useCacheControlNoStore" value="true" />
    </beans:bean>
</interceptors>
<context:component-scan base-package="com.Aquatech.Controller" />

villa
  • 73
  • 1
  • 1
  • 10
  • 1
    please provide your web.xml, application context xml from Spring MVC – ScanQR Nov 18 '16 at 06:37
  • Possible duplicate of [HOWTO set the context path of a web application in Tomcat 7.0](http://stackoverflow.com/questions/7276989/howto-set-the-context-path-of-a-web-application-in-tomcat-7-0) – Vasu Nov 18 '16 at 06:53
  • @vila your web.xml seems to fine. Also for tomcat the default context root is war name. – ScanQR Nov 18 '16 at 06:53

2 Answers2

6

My projectname is: DemoApplication, first this context root is deployed the path is, http://localhost:8080/DemoApplication and second time it is, http://localhost:8080/Controller ?

You NEED TO fix the root context for your web application (DemoApplication) to fix the URL, which you can achieve with one of the below options:

(1) Set the root context as DemoApplication in Tomcat as explained here

(2) If you are using Maven, you can fix your war name by adding the below tag into the pom.xml:

<build>
    <finalName>DemoApplication</finalName>
</build>

Once you are done with either of the above options, you should be able to access your application controller always with below url :

http://localhost:8080/DemoApplication/Controller

Community
  • 1
  • 1
Vasu
  • 21,832
  • 11
  • 51
  • 67
0

if you are using IntelliJ IDE, u can go to top-right server (edit-configuration>select server (example:- tomcat 8.5.61)>Deployment). There is a field "Application context: /(base url server_name)", here you can put whatever you want to keep.

oshin pojta
  • 89
  • 1
  • 6