0
votes

I am writing a web project that uses Spring Framework 2.5 on top of Apache Tomcat 5.0 with JDK 1.4.2.

When Tomcat got started up, it never loaded up Spring.

The Web.xml is like below:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>TestSpring25Web</display-name>
<listener>
    <description>
  loads the spring application context on startup
</description>
    <display-name>spring application context loader listener</display-name>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/web-applicationContext.xml</param-value>
</context-param>
<context-param>
    <param-name>locatorFactorySelector</param-name>
    <param-value>
  classpath:Spring-config.xml
</param-value>
</context-param>
<context-param>
    <param-name>parentContextKey</param-name>
    <param-value>businessBeanFactory</param-value>
</context-param>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/TestDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
<servlet>
    <description></description>
    <display-name>QueryDS</display-name>
    <servlet-name>QueryDS</servlet-name>
    <servlet-class>servlet.QueryDS</servlet-class>
</servlet>
<!-- DWR -->
<servlet>
    <display-name>DWR Servlet</display-name>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>QueryDS</servlet-name>
    <url-pattern>/QueryDS</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>

The "web-applicationContext.xml" is like:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

</beans>

The Console gave me the following log stack trace:

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4149) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) at org.apache.catalina.core.StandardService.start(StandardService.java:525) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 25/06/2012 5:16:28 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Skipped installing application listeners due to previous error(s) 25/06/2012 5:16:28 PM org.apache.catalina.core.StandardContext start SEVERE: Error listenerStart 25/06/2012 5:16:28 PM org.apache.catalina.core.StandardContext start SEVERE: Context [/TestSpring25Web] startup failed due to previous errors

Can anyone help with some ideas? Thanks!

Cheers, Alex

2
Check out your console and all Tomcat /logs. There must be an error somewhere that caused "previous error(s)"Tomasz Nurkiewicz
Put the error/exception in your question (you can edit it at any time)Tomasz Nurkiewicz
If this is a new project, stop immediately. Use Spring 3.1 and Tomcat 6. Your versions are being phased out.Michael-O
Or Tomcat 7, and JDK7. JDK 1.4.2 is not supported for some time now, and is completely obsolete.JB Nizet
if it is a new project , then move to tomcat 7 and use latest stable release of spring is better, and error seems some jar is missing from your class path.Forhad

2 Answers

0
votes

According to the error you are missing the spring jars in your classpath, the easiest solution would be to copy the spring jar (the one that contains the class org.springframework.web.context.ContextLoaderListener) to the lib folder under tomcat.

0
votes

Are you using Maven? It's entirely possible that you have version mismatches between different Spring artefacts, where one is calling in an older dependency that the other artefacts you depend on. I've seen this manifest itself in a ClassNotFoundException before.

  1. Make sure you've got all the dependencies you should have on the classpath (probably spring-web)
  2. Make sure there are no dependency version conflicts
  3. Seriously consider trying to use newer versions of everything if possible!