String prefix = "zimbra_mysql_connector.";
String prefix = "zimbra_mysql_connector_";
    private static Properties getZimbraDbProps() {        Properties props = new Properties();                props.put("cacheResultSetMetadata", "true");        props.put("cachePrepStmts", "true");        props.put("prepStmtCacheSize", "25");                props.put("autoReconnect", "true");        props.put("useUnicode", "true");        props.put("characterEncoding", "UTF-8");        props.put("dumpQueriesOnException", "true");        //props.put("characterEncoding", "UnicodeBig");        //props.put("cacheCallableStmts", "true");        //props.put("prepStmtCacheSqlLmiit", "256");        //props.put("connectTimeout", "0"); // connect timeout in msecs        //props.put("initialTimeout", "2"); // time to wait between re-connects        //props.put("maxReconnects", "3""); // max number of reconnects to attempt        // Set/override MySQL Connector/J connection properties from        // localconfig.  Localconfig keys with "zimbra_mysql_connector."        // prefix are used.        String prefix = "zimbra_mysql_connector.";        int prefixLen = prefix.length();        String[] keys = LC.getAllKeys();        for (int i = 0; i < keys.length; i++) {        	String key = keys[i];            if (key.startsWith(prefix)) {            	String prop = key.substring(prefixLen);                if (prop.length() > 0 && !prop.equalsIgnoreCase("logger")) {                	String val = LC.get(key);                    mLog.info("Setting mysql connector property: " + prop + "=" + val);                    props.put(prop, val);                }            }        }        if (ZimbraLog.sqltrace.isDebugEnabled() || ZimbraLog.perf.isDebugEnabled()) {            props.put("profileSQL", "true");            props.put("logger", MySqlTraceLogger.class.getName());        }        if (ZimbraLog.perf.isDebugEnabled()) {            props.put("slowQueryThresholdMillis", "300");            props.put("logSlowQueries", "true");            // xxx bburtin: for some reason, using explainSlowQueries causes the subsequent            // call to executeQuery() after an EXPLAIN to hang.  Filed MySQL bug# 12229	    // for this issue.  See http://bugs.mysql.com/bug.php?id=12229 for more info.            // props.put("explainSlowQueries", "true");        }                // These properties cannot be set with "zimbra_mysql_connector." keys.        props.put("user", LC.zimbra_mysql_user.value());        props.put("password", LC.zimbra_mysql_password.value());        return props;    }