private DataSource makeJBossDataSource42x(final String schema, final ResultSet rs) throws Exception { if (DEBUG_ENABLED) { dumpConnectionInfo("makeJBossDataSource42x", schema, rs); } final String jndiURL = "jdbc/pool/" + schema; //LocalTXCM ObjectName cmName = new ObjectName("jboss.jca:service=LocalTxCM,name=" + jndiURL); // try to remove mbean if leftover... if (server.isRegistered(cmName)) { server.unregisterMBean(cmName); } Object cmBean = server.createMBean("org.jboss.resource.connectionmanager.TxConnectionManager", cmName); assert cmBean != null : "Server never created TxConnectionManager for: " + schema; assert server.isRegistered(cmName) : "Server never registered ConnectionManager for: " + schema; //ManagedConnection Factory ObjectName mcfName = new ObjectName("jboss.jca:service=ManagedConnectionFactory,name=" + jndiURL); // try to remove mbean if leftover... if (server.isRegistered(mcfName)) { server.unregisterMBean(mcfName); } Object mbean = server.createMBean("org.jboss.resource.connectionmanager.RARDeployment", mcfName); assert mbean != null : "Server never created ManagedConnectinoFactory for: " + schema; assert server.isRegistered(mcfName) : "Server never registered ManagedConnectionFactory for: " + schema; //ManagedConnectionPool ObjectName mcpName = new ObjectName("jboss.jca:service=ManagedConnectionPool,name=" + jndiURL); // try to remove mbean if leftover... if (server.isRegistered(mcpName)) { server.unregisterMBean(mcpName); } Object pool = server.createMBean("org.jboss.resource.connectionmanager.JBossManagedConnectionPool", mcpName); assert pool != null : "Server never created Connection Pool for: " + schema; assert server.isRegistered(mcpName) : "Server never registered Connection Pool for: " + schema; ObjectName serviceControllerName = new ObjectName("jboss.system:service=ServiceController"); // anon block so I don't rename var al { AttributeList al = new AttributeList(); al.add(new Attribute("JndiName", jndiURL)); al.add(new Attribute("ManagedConnectionPool", mcpName)); al.add(new Attribute("CachedConnectionManager", new ObjectName( "jboss.jca:service=CachedConnectionManager"))); final ObjectName tmsName = new ObjectName("jboss:service=TransactionManager"); al.add(new Attribute("TransactionManagerService", tmsName)); al.add(new Attribute("LocalTransactions", Boolean.TRUE)); al.add(new Attribute("TraceConnectionByTx", Boolean.TRUE)); // try to set the attributes on the bean try { server.setAttributes(cmName, al); } catch (UndeclaredThrowableException e) { if (e.getCause() instanceof MBeanException) { LOGGER.error("Exception setting Attribute on Server handle: " + e.getMessage(), e); throw (MBeanException) e.getCause(); } } } // RARDeployment { AttributeList al = new AttributeList(); al.add(new Attribute("ManagedConnectionFactoryClass", "org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory")); // try to set the attributes on the bean server.setAttributes(mcfName, al); } // anon block so I don't rename vars { AttributeList al = new AttributeList(); al.add(new Attribute("PoolJndiName", jndiURL)); al.add(new Attribute("ManagedConnectionFactoryName", mcfName)); al.add(new Attribute("MinSize", new Integer(0))); al.add(new Attribute("MaxSize", new Integer(50))); al.add(new Attribute("BlockingTimeoutMillis", new Long(5000))); al.add(new Attribute("IdleTimeoutMinutes", new Integer(7))); al.add(new Attribute("Criteria", "ByNothing")); // try to set the attributes on the bean server.setAttributes(mcpName, al); } //DataSource ObjectName dsName = new ObjectName("jboss.jca:service=DataSourceBinding,name=" + jndiURL); // try to remove mbean if leftover... if (server.isRegistered(dsName)) { server.unregisterMBean(dsName); } Object dsBean = server.createMBean("org.jboss.resource.adapter.jdbc.remote.WrapperDataSourceService", dsName); assert dsBean != null : "Server never created DataSourceBinding for: " + schema; assert server.isRegistered(dsName) : "Server never registered ConnectionManager for: " + schema; { AttributeList al = new AttributeList(); al.add(new Attribute("JndiName", jndiURL)); al.add(new Attribute("UseJavaContext", Boolean.TRUE)); al.add(new Attribute("ConnectionManager", cmName)); // try to set the attributes on the bean server.setAttributes(dsName, al); }// anon block so I don't rename var // start the mbeans // create and configure the ManagedConnectionFactory /* * //Service Controller should already be running! * server.invoke(serviceControllerName, "create", new Object[]{mcfName}, new String[] {"javax.management.ObjectName"}); * server.invoke(serviceControllerName, "start", new Object[] {mcfName}, new String[] {"javax.management.ObjectName"}); */ // assertTrue("State is not started", "Started".equals(getServer().getAttribute(mcfName, "StateString"))); // Make the Connection URL // Now set the important attributes: final StringBuffer connectionURL = new StringBuffer("jdbc:"); final String sid = rs.getString(SID); if (!rs.wasNull()) { // Oracle DataBase connectionURL.append("oracle:" + ORACLE_DRIVER_TYPE + ":@"); } else { // There is a serious issue somewhere, or a new driver type throw new HRNException(ApplicationConstants.BASE_RESOURCE, "common.error.db.critical.sid", null); } connectionURL.append(rs.getString(MACHINE)); connectionURL.append(':'); connectionURL.append(rs.getString(PORT)); // TODO: Check to see if Oracle before adding following.... connectionURL.append(':'); connectionURL.append(sid); // Now set the important attributes: // create and configure the ManagedConnectionFactory server.invoke(serviceControllerName, "create", new Object[] { mcfName }, new String[] { "javax.management.ObjectName" }); server.invoke(serviceControllerName, "start", new Object[] { mcfName }, new String[] { "javax.management.ObjectName" }); assert "Started".equals(server.getAttribute(mcfName, "StateString")) : "State is not started for ManagedConnectionFactory: " + schema; server.invoke(mcfName, "setManagedConnectionFactoryAttribute", new Object[] { "ConnectionURL", java.lang.String.class, connectionURL.toString() }, new String[] { "java.lang.String", "java.lang.Class", "java.lang.Object" }); // TODO: Verify that we are actually using Oracle, and select the appropriate driver. server.invoke(mcfName, "setManagedConnectionFactoryAttribute", new Object[] { "DriverClass", java.lang.String.class, "oracle.jdbc.driver.OracleDriver" }, new String[] { "java.lang.String", "java.lang.Class", "java.lang.Object" }); server.invoke(mcfName, "setManagedConnectionFactoryAttribute", new Object[] { "UserName", java.lang.String.class, schema }, new String[] { "java.lang.String", "java.lang.Class", "java.lang.Object" }); server.invoke(mcfName, "setManagedConnectionFactoryAttribute", new Object[] { "Password", java.lang.String.class, rs.getString(PASS) }, new String[] { "java.lang.String", "java.lang.Class", "java.lang.Object" }); // start the pool server.invoke(serviceControllerName, "create", new Object[] { mcpName }, new String[] { "javax.management.ObjectName" }); server.invoke(serviceControllerName, "start", new Object[] { mcpName }, new String[] { "javax.management.ObjectName" }); // assertTrue("State is not started", "Started".equals(getServer().getAttribute(mcpName, "StateString"))); // start the ConnectionManager server.invoke(serviceControllerName, "create", new Object[] { cmName }, new String[] { "javax.management.ObjectName" }); server.invoke(serviceControllerName, "start", new Object[] { cmName }, new String[] { "javax.management.ObjectName" }); //Start the DataSource. server.invoke(serviceControllerName, "create", new Object[] { dsName }, new String[] { "javax.management.ObjectName" }); server.invoke(serviceControllerName, "start", new Object[] { dsName }, new String[] { "javax.management.ObjectName" }); // Despite having gone through all of the above, we still don't have a handle // to the dataSource, so get one and return it. return (getDataSource(schema, false)); // end makeJBossDataSource328 }