I'm developing two spring web application and I would want deploy it on apache tomcat 8.0.3. Now my trouble is that if I put one of the web applications in webapp folder (through tomcat7:deploy) everything work, but if I put both of them in the webapps folder, then only one of the two applications will work. If I try to load the application that does not work and I get a 404 error.
This is the webapp folder structure:
> $CATALINA_HOME/webapps/ > $CATALINA_HOME/webapps/MyApp1/ > $CATALINA_HOME/webapps/MyApp1/... > $CATALINA_HOME/webapps/MyApp2/ > $CATALINA_HOME/webapps/MyApp2/... I try to access through the following urls:
> http://localhost:8080/MyApp1 > http://localhost:8080/MyApp2 web.xml of MyApp1:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <display-name>MyApp1</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring-MyApp1-context.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <session-config> <session-timeout>30</session-timeout> </session-config> <servlet> <servlet-name>MyApp1Servlet</servlet-name> <servlet-class>it.myCompany.servlet.springVaadin.AutowiringApplicationServlet</servlet-class> <init-param> <description>Vaadin UI class to use</description> <param-name>UI</param-name> <param-value>it.myCompany.vaadin.application.myApplication</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>MyApp1Servlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> web.xml of MyApp2:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <display-name>MyApp2</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring-MyApp2-context.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <servlet> <servlet-name>MyApp2Servlet</servlet-name> <servlet-class>it.myCompany.servlet.springVaadin.AutowiringApplicationServlet</servlet-class> <init-param> <description>Vaadin UI class to use</description> <param-name>UI</param-name> <param-value>it.myCompany.vaadin.application.myUI</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>MyApp2Servlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> </web-app> This is my catalina.out:
09-May-2014 09:24:24.956 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. INFO ContextLoader - Root WebApplicationContext: initialization started INFO XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Fri May 09 09:24:25 CEST 2014]; root of context hierarchy INFO XmlBeanDefinitionReader - Loading XML bean definitions from URL [file:/home/user/apache-tomcat-8.0.3/webapps/MyApp1/WEB-INF/classes/spring-context.xml] INFO ClassPathBeanDefinitionScanner - JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning INFO XmlBeanDefinitionReader - Loading XML bean definitions from URL [file:/home/user/apache-tomcat-8.0.3/webapps/MyApp1/WEB-INF/classes/database.xml] INFO XmlWebApplicationContext - Bean 'org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver#17f0811' of type [class org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) INFO XmlWebApplicationContext - Bean 'eclipseLinkJpaVendorAdapter' of type [class org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) INFO LocalContainerEntityManagerFactoryBean - Building JPA container EntityManagerFactory for persistence unit 'MyApp1Unit' INFO XmlWebApplicationContext - Bean 'entityManagerFactory' of type [class org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) INFO XmlWebApplicationContext - Bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0' of type [class org.springframework.transaction.annotation.AnnotationTransactionAttributeSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) INFO XmlWebApplicationContext - Bean 'org.springframework.transaction.config.internalTransactionAdvisor' of type [class org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) [EL Info]: 2014-05-09 09:24:58.84--ServerSession(28685765)--EclipseLink, version: Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5 [EL Info]: connection: 2014-05-09 09:25:03.114--ServerSession(28685765)--file:/home/user/apache-tomcat-8.0.3/webapps/MyApp1/WEB-INF/lib/model-0.0.1-SNAPSHOT.jar_MyApp1Unit login successful INFO ContextLoader - Root WebApplicationContext: initialization completed in 47167 ms 09-May-2014 09:25:12.644 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /home/user/apache-tomcat-8.0.3/webapps/MyApp2.war 09-May-2014 09:25:12.646 WARNING [localhost-startStop-1] org.apache.catalina.startup.SetContextPropertiesRule.begin [SetContextPropertiesRule]{Context} Setting property 'antiJARLocking' to 'true' did not find a matching property. 09-May-2014 09:25:35.098 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. [EL Info]: 2014-05-09 09:26:02.022--SessionBroker(5894789)--EclipseLink, version: Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5 [EL Info]: connection: 2014-05-09 09:26:02.631--ServerSession(14644967)--MyApp1Unit login successful [EL Info]: connection: 2014-05-09 09:26:02.779--ServerSession(33125502)--MyApp2Unit login successful [EL Info]: connection: 2014-05-09 09:26:06.366--SessionBroker(5894789)--file:/home/user/apache-tomcat-8.0.3/webapps/MyApp2/WEB-INF/lib/model-composite-0.0.1-SNAPSHOT.jar_compositeUnit login successful 09-May-2014 09:26:07.692 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Error listenerStart 09-May-2014 09:26:07.693 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [/MyApp2] startup failed due to previous errors [EL Info]: connection: 2014-05-09 09:26:07.707--ServerSession(14644967)--MyApp1Unit logout successful [EL Info]: connection: 2014-05-09 09:26:07.708--ServerSession(33125502)--MyApp2Unit logout successful 09-May-2014 09:26:07.715 SEVERE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoader.clearReferencesJdbc The web application [/MyApp2] registered the JDBC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 09-May-2014 09:26:08.277 INFO [main] org.apache.catalina.startup.Catalina.start 09-May-2014 09:26:07.719 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/user/apache-tomcat-8.0.3/webapps/host-manager 09-May-2014 09:26:07.772 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/user/apache-tomcat-8.0.3/webapps/manager 09-May-2014 09:26:07.797 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/user/apache-tomcat-8.0.3/webapps/examples 09-May-2014 09:26:08.233 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/user/apache-tomcat-8.0.3/webapps/ROOT 09-May-2014 09:26:08.250 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/user/apache-tomcat-8.0.3/webapps/docs Server startup in 135339 ms Now I want to ask you How Can I to fix it? And also Is this the best way to manage the deploy of two java webapp, or it would be better have two instances of tomcat each with an application.