Reputation: 5818
I have the next problem: I am trying to deploy an application on my Tomcat 7.0 with jre 6.0...I created a servlet called ListenerTester:
package com.example;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
class ListenerTester extends HttpServlet {
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("text context attributes set by listener<br />");
out.println("<br />");
Dog dog = (Dog) getServletContext().getAttribute("dog");
out.println("The dog`s breed is: " + dog.getBreed());
}
}
Class dog is a simple class which has only one field String breed and getter and Constructor with the parameter.
Next class is the MyServletContextListener:
package com.example;
import javax.servlet.*;
class MyServletContextListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent e) {
ServletContext sc = e.getServletContext();
String dogBreed = sc.getInitParameter("breed");
Dog f = new Dog(dogBreed);
sc.setAttribute("dog", f);
}
public void contextDestroyed(ServletContextEvent e) {
}
}
they are in the package called com.example. The top folder of the application is listenerTester.
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0" >
<servlet>
<servlet-name>ListenerTester</servlet-name>
<servlet-class>com.example.ListenerTester</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ListenerTester</servlet-name>
<url-pattern>/ListenTest.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>breed</param-name>
<param-value>Sparky</param-value>
</context-param>
<listener>
<listener-class>com.example.MyServletContextListener</listener-class>
</listener>
</web-app>
The problem is the next - when I try to run it - the browser does not show anything...at all..no mistake or anything.
When I look inside the catalina log file:
08.11.2011 0:23:56 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
08.11.2011 0:23:56 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
08.11.2011 0:23:56 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 331 ms
08.11.2011 0:23:56 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
08.11.2011 0:23:56 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.8
08.11.2011 0:23:56 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory listenerTest
08.11.2011 0:23:56 org.apache.catalina.core.StandardContext startInternal
**SEVERE**: Error listenerStart
08.11.2011 0:23:56 org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/listenerTest] startup failed due to previous errors
08.11.2011 0:23:56 org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8080"]
08.11.2011 0:23:56 org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
08.11.2011 0:23:56 org.apache.catalina.startup.Catalina start
INFO: Server startup in 233 ms
Could you please tell me what to do and what the mistake is? What is a listenerStart?
Upvotes: 4
Views: 2810
Reputation: 18174
You should have your classes public instead of package-private.
Upvotes: 4