DiagnosticsServlet.java

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

import java.io.IOException;
import java.sql.DatabaseMetaData;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author mprins
 */
public class DiagnosticsServlet implements Servlet {

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

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

    try {
      // lookup db connectie en log info
      DataSource rsgb = ConfigUtil.getDataSourceStaging();
      DatabaseMetaData metadata = rsgb.getConnection().getMetaData();
      LOG.info(
          String.format(
              "\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",
              metadata.getDatabaseProductName(),
              metadata.getDatabaseProductVersion().replace('\n', ' '),
              metadata.getDatabaseMajorVersion(),
              metadata.getDatabaseMinorVersion(),
              metadata.getDriverName(),
              metadata.getDriverVersion(),
              metadata.getDriverMajorVersion(),
              metadata.getDriverMinorVersion()));

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

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

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

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

  @Override
  public String getServletInfo() {
    return "Diagnostics info logging servlet";
  }

  @Override
  public void destroy() {
    // nothing
  }
}