Il est théoriquement possible si vous le mettez de la base de données dans la webcontent publique là où le FacesServlet
exactement attendre que ce soit, avant qu'il entre en jeu. Un Filter
est adapté pour le travail.
Voici un exemple de coup d'envoi:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
String rootPath = req.getSession().getServletContext().getRealPath("/");
String fileName = req.getServletPath().substring(1);
File file = new File(rootPath, fileName);
if (!file.exists()) {
InputStream input = null;
OutputStream output = null;
try {
input = yourDAO.find(fileName);
output = response.getOutputStream();
byte[] buffer = new byte[10240];
for (int length = 0; (length = input.read(buffer)) > 0;) {
output.write(buffer, 0, length);
}
} finally {
if (output != null) try { output.close(); } catch (IOException ignore) {}
if (input != null) try { input.close(); } catch (IOException ignore) {}
}
}
chain.doFilter(request, response);
}
Plan sur la <servlet-name>
du FacesServlet
.