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
}
}