1 21 22 package uk.org.primrose.vendor.jboss.jndi; 23 24 import java.util.ArrayList ; 25 import javax.naming.InitialContext ; 26 import javax.naming.Context ; 27 import javax.naming.NamingException ; 28 import javax.naming.Reference ; 29 import javax.naming.StringRefAddr ; 30 31 import uk.org.primrose.pool.datasource.MasterPoolDataSourceFactory; 32 import uk.org.primrose.pool.datasource.PoolDataSourceFactory; 33 import uk.org.primrose.pool.jmx.MBeanUtil; 34 import uk.org.primrose.pool.jmx.PoolController; 35 import uk.org.primrose.pool.jmx.Queue; 36 import uk.org.primrose.vendor.jboss.ejb.BindHome; 37 import uk.org.primrose.vendor.jboss.ejb.Bind; 38 39 import org.jboss.naming.NonSerializableFactory; 40 41 73 public class BindPrimrose implements BindPrimroseMBean { 74 private String poolConfigFile; 75 76 79 public String getPoolConfigFile() { 80 return poolConfigFile; 81 } 82 83 87 public void setPoolConfigFile(String poolConfigFile) { 88 this.poolConfigFile = poolConfigFile; 89 } 90 91 94 public void stop() { 95 } 96 97 101 public void start() { 102 try { 103 104 InitialContext ic = new InitialContext (); 106 Object objRef = ic.lookup("BindBean"); 107 BindHome home = (BindHome)objRef; 108 Bind binder = home.create(); 109 110 Reference ref = new Reference ("uk.org.primrose.pool.datasource.MasterPoolDataSourceFactory"); 113 String refType = "configFile"; 114 String refAddr = getPoolConfigFile(); 115 StringRefAddr sra = new StringRefAddr (refType, refAddr); 116 ref.add(sra); 117 MasterPoolDataSourceFactory mpdsf = new MasterPoolDataSourceFactory(); 118 119 Object o = mpdsf.getObjectInstance(ref, null, null, null); 121 MBeanUtil.bind("masterPool", o); 122 123 FakeSerializableArrayList fsal = new FakeSerializableArrayList("masterPool"); 126 binder.bindENC("masterPool", fsal); 127 binder.bindRoot("masterPool", fsal); 128 129 130 ArrayList queues = ((PoolController)MBeanUtil.lookup("pool")).getQueues(); 137 for (int i = 0; i < queues.size(); i++) { 138 Queue q = (Queue)queues.get(i); 139 ref = new Reference ("uk.org.primrose.pool.datasource.PoolDataSourceFactory"); 140 refType = "poolName"; 141 refAddr = q.getName(); 142 sra = new StringRefAddr (refType, refAddr); 143 ref.add(sra); 144 145 PoolDataSourceFactory pdsf = new PoolDataSourceFactory(); 146 o = pdsf.getObjectInstance(ref, null, null, null); 147 148 MBeanUtil.bind("java:comp/env/" +q.getName(), o); 149 150 FakeSerializableDataSource fsds = new FakeSerializableDataSource("java:comp/env/" +q.getName()); 151 binder.bindENC(q.getName(), fsds); 154 binder.bindRoot(q.getName(), fsds); 155 } 156 157 158 } catch (Exception e) { 159 e.printStackTrace(System.err); 160 } 161 162 } 163 } 164 | Popular Tags |