Tomcat Java Servlet - 在应用程序启动时初始化类 [英] Tomcat Java Servlet - Initialize Class on Application Startup

查看:593
本文介绍了Tomcat Java Servlet - 在应用程序启动时初始化类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类需要一些时间来启动(进行一些JNI调用而不是什么),因此每次页面加载时初始化此类是不可行的。是否可以在应用程序启动时初始化此类,然后在提供页面时访问其方法?

I have a class that takes a bit of time to start up (makes some JNI calls and what not), so it is not feasable to initialize this class everytime a page loads. Is it possible to initialize this class on application startup, then access its methods as pages are being served up?

例如:

我有MyClass。当应用程序(tomcat)启动时,我希望它按如下方式初始化我的calss:

I have MyClass. When the application (tomcat) starts up I would like it to initialze my calss as follows:

MyClass myClassInstance = new MyClass("arg1", "arg2");

然后当调用一个页面时,比如/ testpage,我想调用myClassInstance:

Then when a page is called, say /testpage, I would like to make calls to myClassInstance:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import MyClass;

public class TestPage extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        String myResult = myClassInstance.getResult("whatever");

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Test</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>" +myResult +"</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

这可能吗?

推荐答案

您有两种选择:


  1. 初始化你的servlet的 init()方法中的类。您可以添加< load-on-startup> 属性,以确保您的servlet是在应用程序启动时创建的,而不是在首次访问时创建的。

  1. Initialize your class in servlet's init() method. You may add <load-on-startup> attribute to make sure your servlet is created at application startup and not on first access.

添加 ServletContextListener 并使用 contextInitialized()回调方法。使用 ServletContext#setAttribute 存储创建的对象以供将来使用。

Add ServletContextListener and use contextInitialized() callback method. Use ServletContext#setAttribute to store created object for future use.

这篇关于Tomcat Java Servlet - 在应用程序启动时初始化类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆