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.vendor.tomcat;
21:
22: import uk.org.primrose.GeneralException;
23: import uk.org.primrose.pool.core.PoolLoader;
24: import java.util.*;
25: import javax.naming.*;
26: import javax.naming.spi.ObjectFactory;
27:
28: /**
29: *
30: * @author sedj
31: *
32: * <code>
33: * public static Connection getPrimroseConnection() throws Exception {
34: * InitialContext ctx = new InitialContext();
35: * PoolLoader pl = (PoolLoader)ctx.lookup("java:comp/env/AllPrimrosePools");
36: * Pool myPool = pl.findExistingPool("myPoolName");
37: * if (myPool != null) {
38: * return myPool.getConnection();
39: * } else {
40: * // Can't find pool ... handle error
41: * throw new Exception("Cannot find pool");
42: * }
43: * }
44: * </code>
45: */
46: public class NoJndiLoaderFactory implements ObjectFactory {
47: public Object getObjectInstance(Object refObj, Name nm,
48: Context ctx, Hashtable env) throws Exception {
49: Reference ref = (Reference) refObj;
50:
51: if (ref.get("primroseConfigFile") == null) {
52: throw new Exception(
53: "You must specify a 'primroseConfigFile' in the <Resource> tag");
54: }
55:
56: String primroseConfigFile = (String) ref.get(
57: "primroseConfigFile").getContent();
58:
59: if (!PoolLoader.havePoolsBeenLoaded()) {
60: try {
61: PoolLoader.loadPool(primroseConfigFile, true);
62: } catch (GeneralException ge) {
63: // GeneralException extends Throwable, not Exception ... so it needs
64: // to be wrapped.
65: throw new Exception(ge);
66: }
67: }
68:
69: return PoolLoader.getInstance();
70: }
71: }
|