DiagnosticsServlet.java

  1. /*
  2.  * Copyright (C) 2016 B3Partners B.V.
  3.  */
  4. package nl.b3p.brmo.service.util;

  5. import java.io.IOException;
  6. import java.sql.DatabaseMetaData;
  7. import javax.servlet.Servlet;
  8. import javax.servlet.ServletConfig;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.ServletRequest;
  11. import javax.servlet.ServletResponse;
  12. import javax.sql.DataSource;
  13. import org.apache.commons.logging.Log;
  14. import org.apache.commons.logging.LogFactory;

  15. /**
  16.  * @author mprins
  17.  */
  18. public class DiagnosticsServlet implements Servlet {

  19.   private static final Log LOG = LogFactory.getLog(DiagnosticsServlet.class);

  20.   @Override
  21.   public void init(ServletConfig config) throws ServletException {

  22.     try {
  23.       // lookup db connectie en log info
  24.       DataSource rsgb = ConfigUtil.getDataSourceStaging();
  25.       DatabaseMetaData metadata = rsgb.getConnection().getMetaData();
  26.       LOG.info(
  27.           String.format(
  28.               "\nDatabase en driver informatie\n\n  Database product: %s\n  Database version: %s\n  Database major:   %s\n  Database minor:   %s\n\n  DBdriver product: %s\n  DBdriver version: %s\n  DBdriver major:   %s\n  DBdriver minor:   %s",
  29.               metadata.getDatabaseProductName(),
  30.               metadata.getDatabaseProductVersion().replace('\n', ' '),
  31.               metadata.getDatabaseMajorVersion(),
  32.               metadata.getDatabaseMinorVersion(),
  33.               metadata.getDriverName(),
  34.               metadata.getDriverVersion(),
  35.               metadata.getDriverMajorVersion(),
  36.               metadata.getDriverMinorVersion()));

  37.       // foute oracle drivers loggen
  38.       if (metadata.getDriverName().startsWith("Oracle")) {
  39.         if (metadata.getDriverVersion().startsWith("12.1.0.1")) {
  40.           LOG.error(
  41.               "De geïnstalleerde JDBC driver heeft bekende problemen met prepared statements, de applicatie zal niet goed werken. Issue #322");
  42.           LOG.info(
  43.               "zie: https://github.com/B3Partners/brmo/wiki/Welke-jdbc-driver voor meer informatie");
  44.         }

  45.         // 11.2.0.3
  46.         if (metadata.getDriverVersion().startsWith("11.2.0.3")) {
  47.           LOG.error(
  48.               "De geïnstalleerde JDBC driver heeft bekende problemen met type conversies, de applicatie zal mogelijk niet goed werken. Issue #322");
  49.           LOG.info(
  50.               "zie: https://github.com/B3Partners/brmo/wiki/Welke-jdbc-driver voor meer informatie");
  51.         }
  52.       }
  53.       metadata.getConnection().close();
  54.     } catch (Exception ex) {
  55.       LOG.error(ex);
  56.     }
  57.   }

  58.   @Override
  59.   public ServletConfig getServletConfig() {
  60.     throw new UnsupportedOperationException("Not supported yet.");
  61.   }

  62.   @Override
  63.   public void service(ServletRequest req, ServletResponse res)
  64.       throws ServletException, IOException {
  65.     throw new UnsupportedOperationException("Not supported yet.");
  66.   }

  67.   @Override
  68.   public String getServletInfo() {
  69.     return "Diagnostics info logging servlet";
  70.   }

  71.   @Override
  72.   public void destroy() {
  73.     // nothing
  74.   }
  75. }