-formattage du texte
-requêtes sur la base de données
Tout marche très bien, sauf que quand la servlet est initialisée, après avoir charger les informations depuis la config de web.xml, soit les informations suivantes :
-adresse jdbc
-driver jdbc
-login
-pass
et bien ça marche tant que la servlet marche, mais dès qu'elle se met en veille (pause ?), soit après un certain moment, et bien ces données de bases qui formaient la connexion con à l'initialisation de la servlet ne valent plus, et les requêtes échouent à tous les coups pour raison que la connexion ne marche plus (elle ne doit plus exister en fait)...
Voici la servlet :
| CODE |
| /* * ContentManager.java * * Created on 17. avril 2005, 00:28 */ package org.wxw; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; import java.util.*; import java.util.regex.*; import java.lang.String; /** * * @author xion * @version 0.6.0 */ public class ContentManager extends HttpServlet { private Connection con; private String redire, redirc; // connexion private String driver, jdbcurl, login, password; /** Initializes the servlet. */ public void init(ServletConfig config) throws ServletException { super.init(config); driver = config.getInitParameter("database-driver-class"); jdbcurl = config.getInitParameter("database-url"); login = config.getInitParameter("database-login"); password = config.getInitParameter("database-password"); redirc = config.getInitParameter("redirect-url-correct"); redire = config.getInitParameter("redirect-url-error"); try{ Class.forName(driver); // chargement du driver con = DriverManager.getConnection(jdbcurl, login, password); }catch(Exception e){ throw new UnavailableException(e.getMessage()); } } /** Destroys the servlet. */ public void destroy() { try{ con.close(); }catch(Exception e){ } super.destroy(); } /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException, UnavailableException { if(con.isClosed()){ try{ Class.forName(driver); // chargement du driver con = DriverManager.getConnection(jdbcurl, login, password); }catch(Exception e){ throw new UnavailableException(e.getMessage()); } } response.setContentType("text/plain"); String author, title, type, text, email, site; String sql; Statement st = con.createStatement(); int newsid, res = 0; PrintWriter out; switch(Integer.parseInt(request.getParameter("mode"))){ case 0: // post de news ... et tous les autres cas de gestion } } /** * Formattage des emails (hors texte), pour les protéger * @param email email à formatter / encoder * @return email formatté */ private String formatEmail(String email){ ... } /** * Formattage de base, lorsqu'on modifie un texte qui a déjà été formatté * @param base texte à formatter * @return texte formatté */ private String formatBase(String base) throws UnsupportedEncodingException{ ... } /** * Formattage du texte pour les news, les commentaires et les datas * @return retourne le texte formatté * @param str texte à formatter, sous forme de chaîne de caractères */ private String formatText(String str) throws UnsupportedEncodingException{ ... } /** Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ processRequest(request, response); }catch(Exception e){ response.getWriter().println("Erreur " + e.getMessage()); } } /** Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ processRequest(request, response); }catch(Exception e){ response.getWriter().println("Erreur " + e.getMessage()); } } /** Returns a short description of the servlet. */ public String getServletInfo() { return "Gestionnaire de contenu de wox-xion.com"; } } |
La connexion est d'abord initialisée avec la servlet, puis, après, je vérifie à chaque fois si elle est close (auquel cas je la recrée), ou toujours en marche... où fais-je faux ?
Question comme ça : est-ce que c'est un bon moyen pour gérer du contenu d'un site ou y a-t-il mieux ? (mysql doit en prendre un sacré coup si je recrée la connexion trop souvent, et surtout si elle reste active longtemps ! :?)