01: /**
02: * Library name : Primrose - A Java Database Connection Pool.
03: * Published by Ben Keeping, http://primrose.org.uk .
04: * Copyright (C) 2004 Ben Keeping, primrose.org.uk
05: * Email: Use "Contact Us Form" on website
06: *
07: * This library is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU Lesser General Public
09: * License as published by the Free Software Foundation; either
10: * version 2.1 of the License, or (at your option) any later version.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this library; if not, write to the Free Software
19: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20: */package uk.org.primrose.pool.core.loadrules;
21:
22: import uk.org.primrose.pool.core.Pool;
23: import uk.org.primrose.Constants;
24: import uk.org.primrose.Logger;
25: import java.net.*;
26:
27: /**
28: *
29: * @author sedj
30: * If the 'emailEvents' parameter is set, the 'smtpMailExchangeServer' parameter
31: * must also be set, aswell as the 'adminEmail'.
32: * Also checks if can connect to the server on port 25 (SMPT port).
33: */
34: public class EmailEvents implements LoadRule {
35:
36: public void runCheck(Pool pool, Logger logger)
37: throws LoadRuleException {
38: logger.info("[Pool@" + pool.getPoolName()
39: + "] Checking 'emailEvents' rule ...");
40: if (pool.getSmtpMailExchangeServer() == null
41: || pool.getSmtpMailExchangeServer().length() == 0) {
42: throw new LoadRuleException(
43: "Pool config parameter 'smtpMailExchangeServer' must be specified if you wish to use the 'emailEvents' parameter.");
44: }
45:
46: if (pool.getAdminEmail() == null
47: || pool.getAdminEmail().length() == 0) {
48: throw new LoadRuleException(
49: "Pool config parameter 'adminEmail' must be specified if you wish to use the 'emailEvents' parameter.");
50: }
51:
52: try {
53: Socket s = new Socket(pool.getSmtpMailExchangeServer(), 25);
54: s.close();
55: } catch (Exception e) {
56: throw new LoadRuleException(
57: "'smtpMailExchangeServer' parameter is set, but the pool cannot connect to the server on port 25",
58: e);
59: }
60:
61: String events = pool.getEmailEvents();
62: String[] eventParts = events.split(",");
63: for (String event : eventParts) {
64: if (event.toUpperCase().equals(Constants.DBCRASH_EVENT)) {
65: if (pool.getOnExceptionCheckSQL() == null
66: || pool.getOnExceptionCheckSQL().length() == 0) {
67: throw new LoadRuleException(
68: "If you wish to be emailed about the DBCRASH event, then you must set the 'onExceptionCheckSQL', eg 'onExceptionCheckSQL=select 1 from dual'");
69: }
70:
71: break;
72: }
73: }
74: }
75:
76: }
|