I am facing a similar problem and have learnt that my listener class will be instantiated when the web.xml is read. I have few functions in the listener class that are used by the main servlet's doPost(which interacts with the database(mysql) to read/write data regarding the users.)along with the methods of HttpSessionListener. So what prevents the container from loading the listener class. I am getting the 404 error.
snippet:
public class EntryServlet extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
PlayersList playa = new PlayersList(); //listener class
if(!playa.isExisting(params[3])){
if(params[1].equals("Register")){
playa.addPlayer(params);
}
}
else
out.println("Username already exists");
if(playa.isExisting(params[argUName],params[argUPwd])){
HttpSession session = request.getSession(true);
session.setMaxInactiveInterval(600);
HashMap playersMap = playa.getActivePlayers();
//code . .
}
else
out.println("Couldn't locate player Name!");
out.println(playa.getIn());
}
Listener class:
public class PlayersList implements HttpSessionListener{
private Connection cn;
private Statement st;
PlayersList(){
try{
Class.forName("com.mysql.jdbc.Driver");
cn = DriverManager.getConnection("jdbc:mysql://localhost/homeDbse\'","root","");
st = cn.createStatement();
}
catch(ClassNotFoundException ce){}
catch(SQLException se){}
catch(Exception e){}
}
public boolean isExisting(String player){
//interaction with dbse
}
public void addPlayer(String[] args){
//interaction with dbse
}
public void sessionCreated(HttpSessionEvent se){
//session managing
}
public void sessionDestroyed(HttpSessionEvent se){
//session managing
}