Pet*_*y B 9 java tomcat classloader
我有一个类需要一些时间来启动(进行一些JNI调用而不是什么),因此每次页面加载时初始化此类是不可行的.是否可以在应用程序启动时初始化此类,然后在提供页面时访问其方法?
例如:
我有MyClass.当应用程序(tomcat)启动时,我希望它初始化我的calss如下:
MyClass myClassInstance = new MyClass("arg1", "arg2");
然后当调用一个页面时,比如/ testpage,我想调用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>");
    }
}
这可能吗?
Tom*_*icz 21
你有两个选择:
在servlet的init()方法中初始化您的类.您可以添加<load-on-startup>属性以确保您的servlet是在应用程序启动时创建的,而不是在第一次访问时创建的.
添加ServletContextListener和使用contextInitialized()回调方法.使用ServletContext#setAttribute存储创建的对象以备将来使用.
如果您希望它对整个应用程序发生一次,并且在任何servlet运行之前发生,请实现ServletContextListener并将您的启动代码放入其中contextInitialized().然后设置web.xml您的类以将您的类指定为侦听器.
否则,您可以执行其他答案所说的内容并将其放在init()servlet 的方法中.
| 归档时间: | 
 | 
| 查看次数: | 17387 次 | 
| 最近记录: |