Вы можете создать синглтон ResourceLoader
и инициализировать его в ServletContextListener
, передав ему ServletContext
.
Затем вы можете использовать это ResourceLoader
для загрузки любого ресурса, который вам понадобится позже, примерно так:
public class ResourceLoader {
private static ResourceLoader instance = new ResourceLoader();
private ServletContext context;
/**
*
*/
private ResourceLoader(){
}
/**
*
*/
public static ResourceLoader getInstance(){
return instance;
}
/**
* @param resourceName
* @return
*/
public InputStream getResourceAsStream(String resourceName) {
if(context == null){
throw new IllegalStateException("ResourceLoader is not initialized.");
}
return context.getResourceAsStream(resourceName);
}
/**
* @param context
*/
public void setContext(ServletContext context){
this.context = context;
}
}
вам придется инициализировать его в методе ServletContextLister
contextInitialized()
следующим образом:
ResourceLoader.getInstance().setContext(servletContextEvenet.getServletContext());
, и вы можете использовать в другом месте в вашем приложении:
ResourceLoader.getInstance().getResourceAsStream(resourceName);