如何让一个服务在启动tomcat时自动运行?

alphafish 2003-12-20 08:07:02
小弟,写了一个Bean,实现的功能是每隔一定量的时间就去查询数据库。现在想在启动Tomcat的时候,就让这个Bean自动运行,请问应该如何做?
...全文
320 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mzqali1 2003-12-25
  • 打赏
  • 举报
回复
tomcat4目前没有办法实现~~
WAPQQ 2003-12-23
  • 打赏
  • 举报
回复
值得关注
alphafish 2003-12-23
  • 打赏
  • 举报
回复
有没有人能解决呀?高手帮帮忙。
alphafish 2003-12-22
  • 打赏
  • 举报
回复
to soloxiao(红色孤独):
谢谢提供的资料,但是使用<load-on-startup>只能使servlet载入,并不能使其运行。

to syuhans(S玉涵S):
你说的不错,我想实现的功能就是监听。bean很简单,主要是监听数据库里的一张表,发现有新记录,就更新一下。现在的主要问题就是怎样让这个监听的bean随着tomcat的启动而启动。
tangxc2003 2003-12-22
  • 打赏
  • 举报
回复
web.xml
寒冬 2003-12-22
  • 打赏
  • 举报
回复
关注,
to: alphafish (alphafish)搂主 你的bean是怎么写的,可否共享一下,我以前也用到了类似的功能,就是想实现实时监听,但是没想出要怎么做?最后做成每隔几分钟刷新页面。
chashui 2003-12-22
  • 打赏
  • 举报
回复
帮你up
junyi2003 2003-12-22
  • 打赏
  • 举报
回复
受益匪浅
soloxiao 2003-12-21
  • 打赏
  • 举报
回复
Servlet深入学习笔记

1:http请求方式:get 和post

get用来得到信息,post用来发送信息

同使用bbs类似,get是读而post是张贴新帖子

get发送信息量小,一般240个字符以内,post则可以发送大量的信息

2:一般的servlet用service方法处理servlet请求

http servlet则分别用doGet doPost方法处理get post请求,而service则负责doxxx方法的安装和调度。

3:用getWriter方法来获得PrintWriter,它是PrintStream的具有国际化功能的对应类。

4:下面的程序演示了一个servlet,用来记录:被访问的次数,服务器生成的实例数,所有的实例访问数。

public class HolisticCounter extends HttpServlet {

static int classCount = 0; // shared by all instances
int count = 0; // separate for each servlet
static Hashtable instances = new Hashtable(); // also shared

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/plain");
PrintWriter out = res.getWriter();

count++;
out.println("Since loading, this servlet instance has been accessed " +
count + " times.");

// Keep track of the instance count by putting a reference to this
// instance in a Hashtable. Duplicate entries are ignored.
// The size() method returns the number of unique instances stored.
instances.put(this, this);
out.println("There are currently " +
instances.size() + " instances.");

classCount++;
out.println("Across all instances, this servlet class has been " +
"accessed " + classCount + " times.");
}
}




5:启动时载入

可以在web.xml使用<load-on-startup>标记实现。

<load-on-startup/>:立即载入,<load-on-startup>10</load-on-startup>10毫秒后载入,通过指定值,可以按一定的顺序载入不同的servlet。

6:确定servlet版本

根据不同版本时引入的新类来判断版本号,省略了try catch语句。

String ver=null;

ver="1.0";

Class.forName("javax.servlet.httpSession");
ver="2.0";

Class.forName("javax.servlet.RequestDispatcher");
ver="2.1";

Class.forName("javax.servlet .http.HttpServletResponse");
ver="2.2";

Class.forName("javax.servlet.Filter");
ver="2.3";




7:servlet协作
(1):使用ServletContext进行信息共享

一个servlet可以使用getServletContext()方法得到web应用的servletContext。可以使用的ServletContext的方法如下:

public void ServletContext.setAttribute(String name,Object o)
public Object ServletContext.getAttribute(String name)
public Enumeration ServletContext.getAttributeNames()
public void ServletContext.removeAttribute(String name)
使用上面的方法与使用HttpSession类似
(2):和其它的ServletContext共享

可以使用getContext方法取得其它ServletContext的句柄
ServletContext myContext = getServletContext();
SerletContext otherContext = myContext.getContext("/other/index.html");
String person=otherContext.getAttribute("user");

alphafish 2003-12-21
  • 打赏
  • 举报
回复
to grgh2000(太阳):
我按照你的方法试过,但是不知道为什么不行。我运行tomcat时,那个servler并没有运行。
pleonheart 2003-12-20
  • 打赏
  • 举报
回复
up,关注
grgh2000 2003-12-20
  • 打赏
  • 举报
回复
要写个serlvet,(你可以把功能写在servlet里,也可以在servlet里调用你的bean)然后,在web-inf里对该servlet配置<load-on-startup>项

81,092

社区成员

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

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