您可以将您的cachedXSLT
实例添加到ServletContext中。您需要在您的 Web XML中注册ServletContextListener , contextInitialized方法将被容器调用一次。因此,如果您将实例添加到,ServletContext
那么它将在所有应用程序中可用。
为此,请创建一个实现ServletContextListener的类:
public class YourContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
//This method is called by the container on start up
//Your code should look something like this:
Source xsltSource = new StreamSource(xsltFile);
TransformerFactory transFact = TransformerFactory.newInstance();
Templates cachedXSLT = transFact.newTemplates(xsltSource);
Transformer trans = cachedXSLT.newTransformer();
ServletContext context = sce.getServletContext();
context.setAttribute("cashedXSLT", cachedXSLT);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
将其注册到您的web.xml
:
<listener>
<listener-class>your.package.YourContextListener</listener-class>
</listener>
在contextInitialized方法中,您可以使用如下方式获取 servlet 上下文并添加属性。
ServletContext context = sce.getServletContext();
context.setAttribute("cashedXSLT", cachedXSLT);
然后你可以使用:
Templates cashedXSLT = (Templates) context.getAttribute("cashedXSLT");
获取您的cachedXSLT
实例。在您的应用程序中获取ServletContext取决于您使用的框架。