我有一个类需要一些时间来启动(进行一些 JNI 调用以及其他调用),因此每次加载页面时初始化此类是不可行的。是否可以在应用程序启动时初始化此类,然后在提供页面时访问其方法?
例如:
我有我的班级。当应用程序(tomcat)启动时,我希望它初始化 myclass,如下所示:
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>");
}
}
这可能吗?
你有两个选择:
在 servlet 中初始化您的类init()
方法。您可以添加<load-on-startup>
属性来确保您的 servlet 是在应用程序启动时创建的,而不是在首次访问时创建的。
Add ServletContextListener
并使用contextInitialized()
回调方法。使用ServletContext#setAttribute存储创建的对象以供将来使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)