You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2006/05/04 08:13:07 UTC
svn commit: r399566 -
/geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/internaldb/DerbyConnectionUtil.java
Author: ammulder
Date: Wed May 3 23:13:05 2006
New Revision: 399566
URL: http://svn.apache.org/viewcvs?rev=399566&view=rev
Log:
Boy this is a crummy class, but I guess that's not a reflection on the
patch!
Fix to use AbstractName lookup instead of ObjectName lookup (GERONIMO-1802
and GERONIMO-1506)
Really needs to use a versionless lookup instead, but at least this is
a step in the right direction.
Modified:
geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/internaldb/DerbyConnectionUtil.java
Modified: geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/internaldb/DerbyConnectionUtil.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/internaldb/DerbyConnectionUtil.java?rev=399566&r1=399565&r2=399566&view=diff
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/internaldb/DerbyConnectionUtil.java (original)
+++ geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/internaldb/DerbyConnectionUtil.java Wed May 3 23:13:05 2006
@@ -20,12 +20,18 @@
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Iterator;
-import javax.management.ObjectName;
import javax.sql.DataSource;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
import org.apache.geronimo.kernel.KernelRegistry;
-import org.apache.geronimo.kernel.ObjectNameUtil;
+import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.kernel.repository.Version;
/**
* A static class to handle retreiving connections. This class is built to
@@ -36,7 +42,9 @@
*/
public class DerbyConnectionUtil {
- public static final String CREATE_DB_PROP = ";create=true";
+ private final static Log log = LogFactory.getLog(DerbyConnectionUtil.class);
+
+ public static final String CREATE_DB_PROP = ";create=true";
public static final String SHUTDOWN_DB_PROP = ";shutdown=true";
@@ -51,9 +59,21 @@
private static final String PROTOCOL = "jdbc:derby:";
private static final String EMPTY_PROPS = "";
-
- private static final ObjectName SYSTEM_DATASOURCE_NAME = ObjectNameUtil
- .getObjectName("geronimo.server:J2EEApplication=null,J2EEServer=geronimo,JCAResource=geronimo/system-database/"+org.apache.geronimo.system.serverinfo.ServerConstants.getVersion()+"/car,j2eeType=JCAManagedConnectionFactory,name=SystemDatasource");
+
+ private static AbstractName SYSTEM_DATASOURCE_NAME = null;
+
+ static {
+ // look up the system data source name without using the version number
+ HashMap props = new HashMap();
+ props.put("name","SystemDatasource");
+ props.put("j2eeType","JCAManagedConnectionFactory");
+ Artifact systemDB = new Artifact("geronimo", "system-database", (Version)null, "car");
+ AbstractNameQuery query = new AbstractNameQuery(systemDB,props);
+ Iterator iter = KernelRegistry.getSingleKernel().listGBeans(query).iterator();
+ if (iter.hasNext()) {
+ SYSTEM_DATASOURCE_NAME = (AbstractName)iter.next();
+ }
+ }
/**
* Get database connection.
@@ -67,8 +87,7 @@
try {
Class.forName(driver).newInstance();
} catch (Exception e) {
- // Problem loading driver class
- return null;
+ log.error("Problem loading driver class", e);
}
// If we are looking for the SystemDatabase get it from the kernel
// because it is not binded to our JNDI Context.
@@ -122,15 +141,14 @@
*/
public static DataSource getDataSource(String dbName) {
try {
- if (SYSTEM_DB.equalsIgnoreCase(dbName)) {
- return (DataSource) KernelRegistry.getSingleKernel().invoke(
- SYSTEM_DATASOURCE_NAME, "$getResource");
- } else {
- return null;
+ if (SYSTEM_DATASOURCE_NAME!=null && SYSTEM_DB.equalsIgnoreCase(dbName)) {
+ return (DataSource) KernelRegistry.getSingleKernel().invoke(
+ SYSTEM_DATASOURCE_NAME, "$getResource");
}
} catch (Exception e) {
- return null;
+ log.error("Problem getting datasource " + dbName, e);
}
+ return null;
}
}