servlet的ServletContext对象何时销毁

jy02209334 2006-12-20 05:49:08
用的是tomcat5.5,是不是在关闭tomcat时候自动销毁 ? 为什么我自己的类实现了
ServletContextListener事件检听器,可是他却没有调用contextDestroyed方法呢,
还是需要自己在程序中销毁 ? 请教高手
注:contextInitialized已经在tomcat启动时自动调用了,可是destroy却不知何时调
...全文
537 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fool_leave 2006-12-20
  • 打赏
  • 举报
回复
可以按关闭按钮,不过你的tomcat是什么版本的。干脆搞到服务里面算了
jy02209334 2006-12-20
  • 打赏
  • 举报
回复
已经加入了listener标记了.
谢谢大家了,我是非法关闭了刚才.顺便问一下,tomcat合法关闭除了ctrl+c还有什么办法?
点关闭按钮代码都不执行.
ChDw 2006-12-20
  • 打赏
  • 举报
回复
你是否已经在web.xml中加入<listener>标记,不加入的话,Tomcat并不知道需要通知你
fool_leave 2006-12-20
  • 打赏
  • 举报
回复
你在contextDestroyed里面加上一个System.out.println("aaaaaa");看看有没有输出

你在什么情况下发现这个方法没有被调用的呢?
contextDestroyed必须是合法关闭才可以,也就是说杀进程是不行的。
在调试环境下设置断点看看
jy02209334 2006-12-20
  • 打赏
  • 举报
回复
顶 大家帮帮忙啊
jy02209334 2006-12-20
  • 打赏
  • 举报
回复
import java.io.*;
import java.util.*;
import bookBean.*;
import api.*;
import personBean.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ContextConfig implements ServletContextListener
{
public void contextInitialized(ServletContextEvent sce)
{
ServletContext app = sce.getServletContext();
InputStream ips = app.getResourceAsStream("/WEB-INF/records/config.properties");
Properties props = new Properties();
try
{
props.load(ips);
}
catch (Exception e)
{
System.out.println(e);
}
String book = props.getProperty("book"),
person = props.getProperty("person"),
record = props.getProperty("record"),
admin = props.getProperty("admin"),
name = props.getProperty("name"),
password = props.getProperty("password");
Manageable manage = new Manage();
manage.load(book,person,record,admin);
boolean b = manage.setAdminister(name,password);
System.out.println(b ? "添加成功,帐号:" + name + "密码:" + password:"添加失败");
app.setAttribute("manage",manage);
}
public void contextDestroyed(ServletContextEvent sce)
{
ServletContext app = sce.getServletContext();
InputStream ips = app.getResourceAsStream("/WEB-INF/records/config.properties");
Properties props = new Properties();
try
{
props.load(ips);
}
catch (Exception e)
{
System.out.println(e);
}
String book = props.getProperty("book"),
person = props.getProperty("person"),
record = props.getProperty("record"),
admin = props.getProperty("admin");
Manageable manage = (Manageable)app.getAttribute("manage");
manage.save(book,person,record,admin);
}
}

这是代码,目的是在结束时 取出context对象中的manage对象并调用其save方法将资料保存,已测试过save方法是正确的
fool_leave 2006-12-20
  • 打赏
  • 举报
回复
在tomcat退出的时候会调用,用来通知ServletContext该销毁了

你的可能是别的原因,最好有代码,不然不好说。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧