クラス org.objectweb.cjdbc.controller.backend.DatabaseBackend

org.objectweb.cjdbc.controller.backend.DatabaseBackendのコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

説明

A DatabaseBackend represents a real database backend that will have to be bound to a virtual C-JDBC database. All connections opened will use the same url but possibly different login/password.

作者:
Emmanuel Cecchet

Mathieu Peltier

Sara Bouchenak

Nicolas Modrzyk

バージョン:
1.0

DatabaseBackend.java75 行で定義されています。

Public メソッド

 DatabaseBackend (String name, String driverPath, String driverClassName, String url, boolean writeCanBeEnabled, String connectionTestStatement) throws NotCompliantMBeanException
 DatabaseBackend (BackendInfo info) throws NotCompliantMBeanException
 DatabaseBackend (String name, String driverPath, String driverClassName, String url, String connectionTestStatement, String dynamicSchemaLevel) throws NotCompliantMBeanException
void setSqlShortFormLength (int sqlShortFormLength)
int getSQLShortFormLength ()
boolean equals (Object other)
boolean hasTables (ArrayList tables)
boolean hasTable (String table)
ArrayList getTables ()
boolean hasStoredProcedure (String procedureName)
synchronized void initializeConnections () throws SQLException
synchronized void finalizeConnections () throws SQLException
final boolean isValidConnection (Connection connection)
void addConnectionManager (String vLogin, AbstractConnectionManager connectionManager)
void startTransaction (Long tid)
void stopTransaction (Long tid)
void waitForAllTransactionsToComplete ()
boolean isStartedTransaction (Long tid)
final synchronized boolean isInitialized () throws SQLException
final synchronized boolean isReadEnabled ()
final synchronized boolean isWriteEnabled ()
final boolean isRecovering ()
final boolean isDisabling ()
final boolean isDisabled ()
final boolean isKilled ()
String getState ()
int getStateValue ()
synchronized void enableRead ()
synchronized void disableRead ()
synchronized void disableWrite ()
synchronized void enableWrite ()
void setDisabling ()
synchronized void disable ()
AbstractConnectionManager getConnectionManager (String vLogin)
HashMap getConnectionManagers ()
String getConnectionTestStatement ()
String getDriverPath ()
String getAssociatedString ()
String getDriverClassName ()
String getName ()
Vector getPendingRequests ()
void addPendingReadRequest (Object request)
void addPendingWriteRequest (Object request)
boolean removePendingRequest (Object request)
DatabaseSchema getDatabaseSchema ()
void setDatabaseSchema (DatabaseSchema databaseSchema, boolean isStatic)
boolean checkDatabaseSchema ()
DriverCompliance getDriverCompliance ()
void checkDriverCompliance () throws SQLException
String getURL ()
void addRewritingRule (AbstractRewritingRule rule)
final String rewriteQuery (String sqlQuery)
String getXml ()
ArrayList getActiveTransactions ()
boolean isSchemaStatic ()
String[] getBackendData ()
long getTotalActiveConnections ()
int getDynamicPrecision ()
void setDynamicPrecision (int dynamicPrecision, boolean gatherSystemTables)
int getTotalTransactions ()
int getTotalReadRequest ()
int getTotalWriteRequest ()
int getTotalRequest ()
void setLastKnownCheckpoint (String checkpoint)
String getLastKnownCheckpoint ()
String getDatabaseProductName ()
ArrayList getRewritingRules ()
void setRewritingRules (ArrayList rewritingRules)
DatabaseBackend copy (String newName, Map parameters) throws Exception
boolean isBackuping ()
synchronized void setState (int state)
void notifyStateChange ()
void notifyJmx (String type)
boolean isWriteCanBeEnabled ()
void setStateListener (BackendStateListener stateListener)

Protected 変数

transient Trace logger

Private 変数

String name
String driverPath
String driverClassName
transient DriverCompliance driverCompliance
String url
boolean writeCanBeEnabled
String connectionTestStatement
DatabaseSchema schema
boolean schemaIsStatic = false
transient HashMap connectionManagers
transient ArrayList activeTransactions = new ArrayList()
transient Vector pendingRequests = new Vector()
int totalRequest
int totalWriteRequest
int totalReadRequest
int totalTransactions
ArrayList rewritingRules
int dynamicPrecision
boolean gatherSystemTables = false
int sqlShortFormLength = 40
String lastKnownCheckpoint
int state = BackendState.DISABLED
transient BackendStateListener stateListener


コンストラクタとデストラクタ

org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend String  name,
String  driverPath,
String  driverClassName,
String  url,
boolean  writeCanBeEnabled,
String  connectionTestStatement
throws NotCompliantMBeanException
 

Creates a new DatabaseBackend instance.

引数:
name logical name assigned to this backend
driverPath path for driver
driverClassName class name of the database native JDBC driver to load
url URL to access the database
writeCanBeEnabled if writes can be enabled on this backend
connectionTestStatement SQL statement used to check if a connection is still valid
例外:
NotCompliantMBeanException if the mbean can not be created (unless we refactor the code this cannot happend)
DatabaseBackend.java172 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.connectionTestStatement, org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverClassName, org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverPath, org.objectweb.cjdbc.controller.backend.DatabaseBackend.dynamicPrecision, org.objectweb.cjdbc.controller.backend.DatabaseBackend.logger, org.objectweb.cjdbc.controller.backend.DatabaseBackend.name, org.objectweb.cjdbc.controller.backend.DatabaseBackend.totalRequest, org.objectweb.cjdbc.controller.backend.DatabaseBackend.url, と org.objectweb.cjdbc.controller.backend.DatabaseBackend.writeCanBeEnabled.

00175 { 00176 super(DatabaseBackendMBean.class); 00177 if (name == null) 00178 throw new IllegalArgumentException(Translate 00179 .get("backend.null.backend.name")); 00180 00181 if (driverClassName == null) 00182 throw new IllegalArgumentException(Translate.get("backend.null.driver")); 00183 00184 if (url == null) 00185 throw new IllegalArgumentException(Translate.get("backend.null.url")); 00186 00187 if (connectionTestStatement == null) 00188 throw new IllegalArgumentException(Translate 00189 .get("backend.null.connection.test")); 00190 00191 this.name = name; 00192 this.writeCanBeEnabled = writeCanBeEnabled; 00193 this.driverPath = driverPath; 00194 this.driverClassName = driverClassName; 00195 this.url = url; 00196 this.connectionTestStatement = connectionTestStatement; 00197 this.connectionManagers = new HashMap(); 00198 logger = Trace 00199 .getLogger("org.objectweb.cjdbc.controller.backend.DatabaseBackend." 00200 + name); 00201 this.driverCompliance = new DriverCompliance(logger); 00202 totalRequest = 0; 00203 dynamicPrecision = DatabaseBackendSchemaConstants.DynamicPrecisionAll; 00204 }

org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend BackendInfo  info  )  throws NotCompliantMBeanException
 

Creates a new DatabaseBackend object

引数:
info a backend info object to create a database backend object from
例外:
NotCompliantMBeanException if mbean is not compliant (unless we refactor the code this cannot happend)
DatabaseBackend.java213 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverClassName, org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverPath, org.objectweb.cjdbc.controller.backend.DatabaseBackend.logger, org.objectweb.cjdbc.controller.backend.DatabaseBackend.name, と org.objectweb.cjdbc.controller.backend.DatabaseBackend.url.

00214 { 00215 this(info.getName(), info.getDriverPath(), info.getDriverClassName(), info 00216 .getUrl(), true, info.getConnectionTestStatement()); 00217 try 00218 { 00219 String xml = info.getXml(); 00220 StringReader sreader = new StringReader(xml); 00221 SAXReader reader = new SAXReader(); 00222 Document document = reader.read(sreader); 00223 Element root = document.getRootElement(); 00224 Iterator iter1 = root.elementIterator(); 00225 while (iter1.hasNext()) 00226 { 00227 Element elem = (Element) iter1.next(); 00228 if (elem.getName().equals(DatabasesXmlTags.ELT_ConnectionManager)) 00229 { 00230 String vuser = elem.valueOf("@" + DatabasesXmlTags.ATT_vLogin); 00231 String rlogin = elem.valueOf("@" + DatabasesXmlTags.ATT_rLogin); 00232 String rpassword = elem.valueOf("@" + DatabasesXmlTags.ATT_rPassword); 00233 Iterator iter2 = elem.elementIterator(); 00234 while (iter2.hasNext()) 00235 { 00236 Element connectionManager = (Element) iter2.next(); 00237 String cname = connectionManager.getName(); 00238 if (cname 00239 .equals(DatabasesXmlTags.ELT_VariablePoolConnectionManager)) 00240 { 00241 int minPoolSize = Integer.parseInt(connectionManager.valueOf("@" 00242 + DatabasesXmlTags.ATT_minPoolSize)); 00243 int maxPoolSize = Integer.parseInt(connectionManager.valueOf("@" 00244 + DatabasesXmlTags.ATT_maxPoolSize)); 00245 int idleTimeout = Integer.parseInt(connectionManager.valueOf("@" 00246 + DatabasesXmlTags.ATT_idleTimeout)); 00247 int waitTimeout = Integer.parseInt(connectionManager.valueOf("@" 00248 + DatabasesXmlTags.ATT_waitTimeout)); 00249 this.addConnectionManager(vuser, 00250 new VariablePoolConnectionManager(url, name, rlogin, 00251 rpassword, driverPath, driverClassName, minPoolSize, 00252 maxPoolSize, idleTimeout, waitTimeout)); 00253 } 00254 else if (cname.equals(DatabasesXmlTags.ELT_SimpleConnectionManager)) 00255 { 00256 this.addConnectionManager(vuser, new SimpleConnectionManager(url, 00257 name, rlogin, rpassword, driverPath, driverClassName)); 00258 } 00259 else if (cname 00260 .equals(DatabasesXmlTags.ELT_RandomWaitPoolConnectionManager)) 00261 { 00262 int poolSize = Integer.parseInt(connectionManager.valueOf("@" 00263 + DatabasesXmlTags.ATT_poolSize)); 00264 int timeout = Integer.parseInt(connectionManager.valueOf("@" 00265 + DatabasesXmlTags.ATT_timeout)); 00266 this 00267 .addConnectionManager(vuser, 00268 new RandomWaitPoolConnectionManager(url, name, rlogin, 00269 rpassword, driverPath, driverClassName, poolSize, 00270 timeout)); 00271 } 00272 else if (cname 00273 .equals(DatabasesXmlTags.ELT_FailFastPoolConnectionManager)) 00274 { 00275 int poolSize = Integer.parseInt(connectionManager.valueOf("@" 00276 + DatabasesXmlTags.ATT_poolSize)); 00277 this.addConnectionManager(vuser, 00278 new FailFastPoolConnectionManager(url, name, rlogin, 00279 rpassword, driverPath, driverClassName, poolSize)); 00280 } 00281 } 00282 } 00283 } 00284 00285 } 00286 catch (Exception e) 00287 { 00288 logger 00289 .error(Translate.get("backend.add.connection.manager.failed", e), e); 00290 } 00291 }

org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend String  name,
String  driverPath,
String  driverClassName,
String  url,
String  connectionTestStatement,
String  dynamicSchemaLevel
throws NotCompliantMBeanException
 

Additionnal constructor for setting a different dynamic schema level. Default was to gather all information Creates a new DatabaseBackend instance.

引数:
name logical name assigned to this backend
driverPath path for driver
driverClassName class name of the database native JDBC driver to load
url URL to access the database
connectionTestStatement SQL statement used to check if a connection is still valid
dynamicSchemaLevel for dynamically gathering schema from backend
例外:
NotCompliantMBeanException (unless we refactor the code this cannot happend)
DatabaseBackend.java309 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.connectionTestStatement, org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverClassName, org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverPath, org.objectweb.cjdbc.controller.backend.DatabaseBackend.name, と org.objectweb.cjdbc.controller.backend.DatabaseBackend.url.

00312 { 00313 this(name, driverPath, driverClassName, url, true, connectionTestStatement); 00314 this.dynamicPrecision = DatabaseBackendSchemaConstants 00315 .getDynamicSchemaLevel(dynamicSchemaLevel); 00316 }


メソッド

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.addConnectionManager String  vLogin,
AbstractConnectionManager  connectionManager
 

Adds a ConnectionManager to this backend. Note that the ConnectionManager is not initialized in this method.

引数:
vLogin the virtual login corresponding to this connection manager
connectionManager the ConnectionManager to add
DatabaseBackend.java526 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.copy().

00528 { 00529 if (connectionManager == null) 00530 throw new IllegalArgumentException(Translate.get( 00531 "backend.null.connection.manager", new String[]{name, url})); 00532 if (logger.isInfoEnabled()) 00533 logger.info(Translate.get("backend.add.connection.manager.for.user", 00534 vLogin)); 00535 connectionManager.setVLogin(vLogin); 00536 connectionManagers.put(vLogin, connectionManager); 00537 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.addPendingReadRequest Object  request  ) 
 

Adds a pending request (or task) to this backend. Note that the underlying vector is synchronized.

引数:
request the request to add
DatabaseBackend.java902 行で定義されています。
00903 { 00904 synchronized (this) 00905 { 00906 totalRequest++; 00907 totalReadRequest++; 00908 } 00909 pendingRequests.add(request); 00910 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.addPendingWriteRequest Object  request  ) 
 

Adds a pending request (or task) to this backend. Note that the underlying vector is synchronized.

引数:
request the request to add
DatabaseBackend.java918 行で定義されています。
00919 { 00920 synchronized (this) 00921 { 00922 totalRequest++; 00923 totalWriteRequest++; 00924 } 00925 pendingRequests.add(request); 00926 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.addRewritingRule AbstractRewritingRule  rule  ) 
 

Add a AbstractRewritingRule at the end of the rule list.

引数:
rule a AbstractRewritingRule
DatabaseBackend.java1086 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.rewriting.AbstractRewritingRule.getQueryPattern(), と org.objectweb.cjdbc.controller.backend.rewriting.AbstractRewritingRule.getRewrite().

01087 { 01088 if (rewritingRules == null) 01089 rewritingRules = new ArrayList(); 01090 if (logger.isDebugEnabled()) 01091 logger.debug(Translate.get("backend.rewriting.rule.add", new String[]{ 01092 rule.getQueryPattern(), rule.getRewrite()})); 01093 rewritingRules.add(rule); 01094 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.checkDatabaseSchema  ) 
 

参照:
DatabaseBackendMBean#checkDatabaseSchema()
DatabaseBackend.java976 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackendMetaData.getDatabaseSchema(), と org.objectweb.cjdbc.controller.connection.AbstractConnectionManager.getLogin().

参照元 org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getAndCheckBackend().

00977 { 00978 if (logger.isDebugEnabled()) 00979 logger.debug(Translate.get("backend.dynamic.schema", 00980 DatabaseBackendSchemaConstants 00981 .getDynamicSchemaLevel(dynamicPrecision))); 00982 boolean checked = true; 00983 AbstractConnectionManager connectionMananger; 00984 Iterator iter = connectionManagers.values().iterator(); 00985 while (iter.hasNext()) 00986 { 00987 connectionMananger = (AbstractConnectionManager) iter.next(); 00988 00989 // Gather the database schema from this connection manager 00990 DatabaseBackendMetaData meta = new DatabaseBackendMetaData( 00991 connectionMananger, logger, dynamicPrecision, gatherSystemTables); 00992 00993 DatabaseSchema metaSchema; 00994 try 00995 { 00996 if (logger.isInfoEnabled()) 00997 logger.info(Translate.get("backend.gathering.database.schema")); 00998 metaSchema = meta.getDatabaseSchema(); 00999 } 01000 catch (SQLException e) 01001 { 01002 if (logger.isWarnEnabled()) 01003 logger.warn(Translate.get("backend.gather.schema.failed", e)); 01004 return false; 01005 } 01006 if (schema == null) 01007 { 01008 if (logger.isDebugEnabled()) 01009 logger.debug(Translate.get("backend.use.gathered.schema.as.new")); 01010 schema = metaSchema; 01011 } 01012 else 01013 { 01014 if (logger.isInfoEnabled()) 01015 logger.info(Translate.get("backend.check.schema.compatibility")); 01016 if (schema.isCompatibleSubset(metaSchema)) 01017 logger.info(Translate.get("backend.schema.compatible.for.login", 01018 connectionMananger.getLogin())); 01019 else 01020 { 01021 checked = false; 01022 logger.warn(Translate.get("backend.schema.not.compatible.for.login", 01023 connectionMananger.getLogin())); 01024 } 01025 } 01026 } 01027 return checked; 01028 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.checkDriverCompliance  )  throws SQLException
 

Check if the driver used by this backend is compliant with C-JDBC needs.

例外:
SQLException if the driver is not compliant
DatabaseBackend.java1043 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getAndCheckBackend().

01044 { 01045 if (connectionManagers.isEmpty()) 01046 throw new SQLException(Translate.get("backend.null.connection.manager", 01047 new String[]{name, url})); 01048 01049 AbstractConnectionManager connectionManager; 01050 Iterator iter = connectionManagers.values().iterator(); 01051 connectionManager = (AbstractConnectionManager) iter.next(); 01052 01053 try 01054 { 01055 if (!driverCompliance.complianceTest(url, connectionManager.getLogin(), 01056 connectionManager.getPassword(), connectionManager.getDriverPath(), 01057 connectionManager.getDriverClassName(), connectionTestStatement)) 01058 throw new SQLException(Translate.get("backend.driver.not.compliant", 01059 driverClassName)); 01060 } 01061 catch (ConnectException e) 01062 { 01063 throw new SQLException(Translate.get("backend.cannot.connect.to", e)); 01064 } 01065 }

DatabaseBackend org.objectweb.cjdbc.controller.backend.DatabaseBackend.copy String  newName,
Map  parameters
throws Exception
 

Returns a deeply copied clone of this backend Will use the same rewriting rules and will get new instance of connection managers with the same configuration

引数:
newName the new name for this new backend
parameters a set of parameters to use to replace values from the copied backend.
The different parameters are:
  • driverPath: the path to the driver
  • driver: the driver class name
  • url: the url to connect to the database
  • connectionTestStatement: the query to test the connection

戻り値:
DatabaseBackend instance
例外:
Exception if cannot proceed the copy
DatabaseBackend.java1375 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.addConnectionManager(), org.objectweb.cjdbc.controller.connection.AbstractConnectionManager.copy(), と org.objectweb.cjdbc.controller.backend.DatabaseBackend.setRewritingRules().

参照元 org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.replicateBackend().

01376 { 01377 // Get the parameters from the backend if they are not specified, or take 01378 // them from the map of parameters otherwise. 01379 String driverPath = parameters.containsKey(DatabasesXmlTags.ATT_driverPath) 01380 ? (String) parameters.get(DatabasesXmlTags.ATT_driverPath) 01381 : this.getDriverPath(); 01382 01383 String driverClassName = parameters 01384 .containsKey(DatabasesXmlTags.ATT_driver) ? (String) parameters 01385 .get(DatabasesXmlTags.ATT_driver) : this.getDriverClassName(); 01386 01387 String url = parameters.containsKey(DatabasesXmlTags.ATT_url) 01388 ? (String) parameters.get(DatabasesXmlTags.ATT_url) 01389 : this.getURL(); 01390 01391 String connectionTestStatement = parameters 01392 .containsKey(DatabasesXmlTags.ATT_connectionTestStatement) 01393 ? (String) parameters.get(DatabasesXmlTags.ATT_connectionTestStatement) 01394 : this.getConnectionTestStatement(); 01395 01396 // Create the new backend object 01397 DatabaseBackend newBackend = new DatabaseBackend(newName, driverPath, 01398 driverClassName, url, writeCanBeEnabled, connectionTestStatement); 01399 01400 // Set the rewriting rules and the connection managers as the backend we 01401 // are copying 01402 newBackend.setRewritingRules(this.getRewritingRules()); 01403 01404 // Set Connection managers 01405 HashMap connectionManagers = this.getConnectionManagers(); 01406 Iterator iter = connectionManagers.keySet().iterator(); 01407 01408 String vlogin = null; 01409 AbstractConnectionManager connectionManager; 01410 while (iter.hasNext()) 01411 { 01412 vlogin = (String) iter.next(); 01413 connectionManager = (AbstractConnectionManager) connectionManagers 01414 .get(vlogin); 01415 newBackend.addConnectionManager(vlogin, connectionManager.copy(url, 01416 newName)); 01417 } 01418 01419 return newBackend; 01420 01421 }

synchronized void org.objectweb.cjdbc.controller.backend.DatabaseBackend.disable  ) 
 

Sets the database backend state to disable. This state is just an indication and it has no semantic effect. It is up to the request manager (especially the load balancer) to ensure that no more requests are sent to this backend. DatabaseBackend.java809 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.AbstractLoadBalancer.AbstractLoadBalancer(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.SelectRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequest(), と org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequestWithKeys().

00810 { 00811 setState(BackendState.DISABLED); 00812 }

synchronized void org.objectweb.cjdbc.controller.backend.DatabaseBackend.disableRead  ) 
 

参照:
org.objectweb.cjdbc.common.jmx.mbeans.DatabaseBackendMBean.disableRead()
DatabaseBackend.java755 行で定義されています。
00756 { 00757 if (isWriteEnabled()) 00758 setState(BackendState.READ_DISABLED_WRITE_ENABLED); 00759 else 00760 setState(BackendState.DISABLED); 00761 }

synchronized void org.objectweb.cjdbc.controller.backend.DatabaseBackend.disableWrite  ) 
 

参照:
org.objectweb.cjdbc.common.jmx.mbeans.DatabaseBackendMBean.disableWrite()
DatabaseBackend.java766 行で定義されています。
00767 { 00768 if (isReadEnabled()) 00769 setState(BackendState.READ_ENABLED_WRITE_DISABLED); 00770 else 00771 setState(BackendState.DISABLED); 00772 }

synchronized void org.objectweb.cjdbc.controller.backend.DatabaseBackend.enableRead  ) 
 

Enables the database backend for reads. This method should only be called when the backend is synchronized with the others. DatabaseBackend.java744 行で定義されています。

00745 { 00746 if (isWriteEnabled()) 00747 setState(BackendState.READ_ENABLED_WRITE_ENABLED); 00748 else 00749 setState(BackendState.READ_ENABLED_WRITE_DISABLED); 00750 }

synchronized void org.objectweb.cjdbc.controller.backend.DatabaseBackend.enableWrite  ) 
 

Enables the database backend for writes. This method should only be called when the backend is synchronized with the others. DatabaseBackend.java778 行で定義されています。

00779 { 00780 if (isReadEnabled()) 00781 setState(BackendState.READ_ENABLED_WRITE_ENABLED); 00782 else 00783 setState(BackendState.READ_DISABLED_WRITE_ENABLED); 00784 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.equals Object  other  ) 
 

Two database backends are considered equal if they have the same name, URL and driver class name.

引数:
other an object
戻り値:
a boolean value
DatabaseBackend.java348 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverClassName, org.objectweb.cjdbc.controller.backend.DatabaseBackend.getDriverClassName(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.getName(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.getURL(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.name, と org.objectweb.cjdbc.controller.backend.DatabaseBackend.url.

参照元 org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec.disableBackend(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.disableBackend(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec.disableBackend(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.disableBackend(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.disableBackend(), と org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.handle().

00349 { 00350 if ((other == null) || (!(other instanceof DatabaseBackend))) 00351 return false; 00352 else 00353 { 00354 DatabaseBackend b = (DatabaseBackend) other; 00355 return name.equals(b.getName()) 00356 && driverClassName.equals(b.getDriverClassName()) 00357 && url.equals(b.getURL()); 00358 } 00359 }

synchronized void org.objectweb.cjdbc.controller.backend.DatabaseBackend.finalizeConnections  )  throws SQLException
 

Releases all the connections to the database held by the connection managers.

例外:
SQLException if an error occurs
DatabaseBackend.java464 行で定義されています。

参照元 org.objectweb.cjdbc.controller.core.shutdown.VirtualDatabaseShutdownThread.shutdownBackends().

00465 { 00466 if (connectionManagers.isEmpty()) 00467 throw new SQLException(Translate.get("backend.not.defined", new String[]{ 00468 name, url})); 00469 00470 AbstractConnectionManager connectionManager; 00471 Iterator iter = connectionManagers.values().iterator(); 00472 while (iter.hasNext()) 00473 { 00474 connectionManager = (AbstractConnectionManager) iter.next(); 00475 if (connectionManager.isInitialized()) 00476 connectionManager.finalizeConnections(); 00477 } 00478 }

ArrayList org.objectweb.cjdbc.controller.backend.DatabaseBackend.getActiveTransactions  ) 
 

戻り値:
Returns the activeTransactions.
DatabaseBackend.java1182 行で定義されています。
01183 { 01184 return activeTransactions; 01185 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getAssociatedString  ) 
 

参照:
org.objectweb.cjdbc.controller.jmx.AbstractStandardMBean.getAssociatedString()
DatabaseBackend.java860 行で定義されています。
00861 { 00862 return "backend"; 00863 }

String [] org.objectweb.cjdbc.controller.backend.DatabaseBackend.getBackendData  ) 
 

Get data about this backend

戻り値:
an array of strings
DatabaseBackend.java1200 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.viewBackendInformation().

01201 { 01202 String[] data = new String[14]; 01203 data[0] = this.name; 01204 data[1] = this.driverClassName; 01205 data[2] = this.url; 01206 data[3] = String.valueOf(this.activeTransactions.size()); 01207 data[4] = String.valueOf(this.pendingRequests.size()); 01208 data[5] = String.valueOf(this.isReadEnabled()); 01209 data[6] = String.valueOf(this.isWriteEnabled()); 01210 try 01211 { 01212 data[7] = String.valueOf(this.isInitialized()); 01213 } 01214 catch (Exception e) 01215 { 01216 data[7] = "unknown"; 01217 } 01218 data[8] = String.valueOf(this.schemaIsStatic); 01219 01220 data[9] = String.valueOf(this.connectionManagers.size()); 01221 data[10] = String.valueOf(getTotalActiveConnections()); 01222 data[11] = String.valueOf(totalRequest); 01223 data[12] = String.valueOf(totalTransactions); 01224 if (lastKnownCheckpoint == null || lastKnownCheckpoint.equalsIgnoreCase("")) 01225 data[13] = "<unknown>"; 01226 else 01227 data[13] = lastKnownCheckpoint; 01228 return data; 01229 }

AbstractConnectionManager org.objectweb.cjdbc.controller.backend.DatabaseBackend.getConnectionManager String  vLogin  ) 
 

Returns the ConnectionManager associated to this backend for a given virtual login.

引数:
vLogin the virtual login
戻り値:
an AbstractConnectionManager instance
DatabaseBackend.java823 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB.commit(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.SelectRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.RollbackTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.CommitTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.BeginTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequestWithKeys(), と org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB.rollback().

00824 { 00825 return (AbstractConnectionManager) connectionManagers.get(vLogin); 00826 }

HashMap org.objectweb.cjdbc.controller.backend.DatabaseBackend.getConnectionManagers  ) 
 

Returns a HashMap of all the ConnectionManager associated with this DatabaseBackend

戻り値:
the hashmap of connection managers
DatabaseBackend.java834 行で定義されています。
00835 { 00836 return this.connectionManagers; 00837 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getConnectionTestStatement  ) 
 

Returns the SQL statement to use to check the connection validity.

戻り値:
a String containing a SQL statement
DatabaseBackend.java844 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.createBackendInfo().

00845 { 00846 return connectionTestStatement; 00847 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getDatabaseProductName  ) 
 

Returns the databaseProductName value.

戻り値:
Returns the databaseProductName.
DatabaseBackend.java1331 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableBackendFromCheckpoint(), と org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getDatabaseSchemaFromActiveBackendsAndRefreshDatabaseProductNames().

01332 { 01333 return driverCompliance.getDatabaseProductName(); 01334 }

DatabaseSchema org.objectweb.cjdbc.controller.backend.DatabaseBackend.getDatabaseSchema  ) 
 

Returns the schema of this database.

戻り値:
the schema of this database. Returns null if the schema has not been set.
参照:
setDatabaseSchema
DatabaseBackend.java947 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getAndCheckBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getDatabaseSchemaFromActiveBackendsAndRefreshDatabaseProductNames(), と org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.updateSchema().

00948 { 00949 return schema; 00950 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getDriverClassName  ) 
 

Returns the database native JDBC driver class name.

戻り値:
the driver class name
DatabaseBackend.java870 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.createBackendInfo(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.disableBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableBackend(), と org.objectweb.cjdbc.controller.backend.DatabaseBackend.equals().

00871 { 00872 return driverClassName; 00873 }

DriverCompliance org.objectweb.cjdbc.controller.backend.DatabaseBackend.getDriverCompliance  ) 
 

戻り値:
the driver compliance to C-JDBC requirements.
DatabaseBackend.java1033 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), と org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequestWithKeys().

01034 { 01035 return driverCompliance; 01036 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getDriverPath  ) 
 

参照:
org.objectweb.cjdbc.common.jmx.mbeans.DatabaseBackendMBean.getDriverPath()
DatabaseBackend.java852 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.createBackendInfo().

00853 { 00854 return driverPath; 00855 }

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.getDynamicPrecision  ) 
 

戻り値:
Returns the dynamicPrecision.
DatabaseBackend.java1250 行で定義されています。
01251 { 01252 return dynamicPrecision; 01253 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getLastKnownCheckpoint  ) 
 

Returns the lastKnownCheckpoint value.

戻り値:
Returns the lastKnownCheckpoint.
DatabaseBackend.java1321 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.BackendStateListener.changeState(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.disableBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableBackendFromLastCheckpoint(), と org.objectweb.cjdbc.controller.requestmanager.RequestManager.storeBackendsInfo().

01322 { 01323 return lastKnownCheckpoint; 01324 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getName  ) 
 

Returns the backend logical name.

戻り値:
the backend logical name
DatabaseBackend.java880 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.AbstractLoadBalancer.AbstractLoadBalancer(), org.objectweb.cjdbc.controller.backend.BackendStateListener.changeState(), org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB.commit(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.createBackendInfo(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.disableAllBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.disableBackend(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.disableBackendsForCheckpoint(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableAllBackendsFromRecovery(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableBackend(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.equals(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_RR.execReadOnlyReadStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF.execReadOnlyReadStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_RR.execReadRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF.execReadRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execReadRequest(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.SelectRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.RollbackTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.CommitTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.BeginTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequestWithKeys(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getAndCheckBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getBackendInformation(), org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobin.getBackends(), org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRandom.getBackends(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.handle(), org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB.rollback(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.setBackendsLastKnownCheckpointFromRecoveryLog(), と org.objectweb.cjdbc.controller.requestmanager.RequestManager.storeBackendsInfo().

00881 { 00882 return name; 00883 }

Vector org.objectweb.cjdbc.controller.backend.DatabaseBackend.getPendingRequests  ) 
 

Returns the list of pending requests for this backend.

戻り値:
Vector of AbstractRequests or AbstractTask objects
DatabaseBackend.java891 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_LPRF.chooseBackendForReadRequest(), org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_LPRF.chooseBackendForWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF.execReadOnlyReadStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF.execReadRequest(), と org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_LPRF.executeLPRF().

00892 { 00893 return pendingRequests; 00894 }

ArrayList org.objectweb.cjdbc.controller.backend.DatabaseBackend.getRewritingRules  ) 
 

Returns the rewritingRules value.

戻り値:
Returns the rewritingRules.
DatabaseBackend.java1341 行で定義されています。
01342 { 01343 return rewritingRules; 01344 }

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.getSQLShortFormLength  ) 
 

Return the sql short form length to use when reporting an error.

戻り値:
sql short form length
参照:
org.objectweb.cjdbc.common.sql.AbstractRequest.getSQLShortForm(int)
DatabaseBackend.java334 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.sqlShortFormLength.

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.SelectRequestTask.execute(), と org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask.execute().

00335 { 00336 return sqlShortFormLength; 00337 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getState  ) 
 

Retrieve the state of the backend.

参照:
CjdbcNotificationList#VIRTUALDATABASE_BACKEND_DISABLED

CjdbcNotificationList#VIRTUALDATABASE_BACKEND_RECOVERING

CjdbcNotificationList#VIRTUALDATABASE_BACKEND_BACKINGUP

CjdbcNotificationList#VIRTUALDATABASE_BACKEND_DISABLING

CjdbcNotificationList#VIRTUALDATABASE_BACKEND_ENABLED

CjdbcNotificationList#VIRTUALDATABASE_BACKEND_DISABLED

戻り値:
one of the above
DatabaseBackend.java705 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getBackendState().

00706 { 00707 switch (state) 00708 { 00709 case BackendState.READ_ENABLED_WRITE_DISABLED : 00710 return CjdbcNotificationList.VIRTUALDATABASE_BACKEND_ENABLED; 00711 case BackendState.READ_ENABLED_WRITE_ENABLED : 00712 return CjdbcNotificationList.VIRTUALDATABASE_BACKEND_ENABLED_WRITE; 00713 case BackendState.READ_DISABLED_WRITE_ENABLED : 00714 return CjdbcNotificationList.VIRTUALDATABASE_BACKEND_ENABLED_WRITE; 00715 case BackendState.DISABLING : 00716 return CjdbcNotificationList.VIRTUALDATABASE_BACKEND_DISABLING; 00717 case BackendState.BACKUPING : 00718 return CjdbcNotificationList.VIRTUALDATABASE_BACKEND_BACKINGUP; 00719 case BackendState.RECOVERING : 00720 return CjdbcNotificationList.VIRTUALDATABASE_BACKEND_RECOVERING; 00721 case BackendState.DISABLED : 00722 return CjdbcNotificationList.VIRTUALDATABASE_BACKEND_DISABLED; 00723 case BackendState.UNKNOWN : 00724 return CjdbcNotificationList.VIRTUALDATABASE_BACKEND_UNKNOWN; 00725 default : 00726 throw new IllegalArgumentException("Unknown backend state:" + state); 00727 } 00728 }

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.getStateValue  ) 
 

Return the integer value corresponding to the state of the backend

戻り値:
int value
DatabaseBackend.java735 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.BackendStateListener.changeState(), と org.objectweb.cjdbc.controller.requestmanager.RequestManager.storeBackendsInfo().

00736 { 00737 return state; 00738 }

ArrayList org.objectweb.cjdbc.controller.backend.DatabaseBackend.getTables  ) 
 

Get all the names of tables of this database

戻り値:
ArrayList of DatabaseTable
DatabaseBackend.java410 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.schema.

00411 { 00412 if (schema == null) 00413 throw new NullPointerException(Translate.get("backend.schema.not.set")); 00414 return schema.getTables(); 00415 }

long org.objectweb.cjdbc.controller.backend.DatabaseBackend.getTotalActiveConnections  ) 
 

Get the total number of active connections for this backend

戻り値:
number of active connections for all AbstractConnectionManager connected to this backend
DatabaseBackend.java1237 行で定義されています。
01238 { 01239 int activeConnections = 0; 01240 Iterator iter = connectionManagers.keySet().iterator(); 01241 while (iter.hasNext()) 01242 activeConnections += ((AbstractConnectionManager) connectionManagers 01243 .get(iter.next())).getCurrentNumberOfConnections(); 01244 return activeConnections; 01245 }

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.getTotalReadRequest  ) 
 

Returns the total number of read requests executed by this backend.

戻り値:
Returns the totalReadRequest.
DatabaseBackend.java1281 行で定義されています。
01282 { 01283 return totalReadRequest; 01284 }

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.getTotalRequest  ) 
 

Returns the total number of requests executed by this backend.

戻り値:
Returns the totalRequest.
DatabaseBackend.java1301 行で定義されています。
01302 { 01303 return totalRequest; 01304 }

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.getTotalTransactions  ) 
 

Returns the total number of transactions executed by this backend.

戻り値:
Total number of transactions.
DatabaseBackend.java1271 行で定義されています。
01272 { 01273 return totalTransactions; 01274 }

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.getTotalWriteRequest  ) 
 

Returns the total number of write requests executed by this backend.

戻り値:
Returns the totalWriteRequest.
DatabaseBackend.java1291 行で定義されています。
01292 { 01293 return totalWriteRequest; 01294 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getURL  ) 
 

Returns the JDBC URL used to access the database.

戻り値:
a JDBC URL
DatabaseBackend.java1072 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.createBackendInfo(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.disableBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableBackend(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.equals(), と org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.isCompatibleBackend().

01073 { 01074 return url; 01075 }

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.getXml  ) 
 

Get xml information about this backend.

戻り値:
xml formatted information on this database backend.
DatabaseBackend.java1132 行で定義されています。

参照先 org.objectweb.cjdbc.controller.connection.AbstractConnectionManager.getXml().

参照元 org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.createBackendInfo(), と org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getBackendInformation().

01133 { 01134 StringBuffer info = new StringBuffer(); 01135 info.append("<" + DatabasesXmlTags.ELT_DatabaseBackend + " " 01136 + DatabasesXmlTags.ATT_name + "=\"" + name + "\" " 01137 + DatabasesXmlTags.ATT_driver + "=\"" + driverClassName + "\" " 01138 + DatabasesXmlTags.ATT_url + "=\"" + url + "\" " 01139 + DatabasesXmlTags.ATT_connectionTestStatement + "=\"" 01140 + connectionTestStatement + "\">"); 01141 01142 info.append("<" 01143 + DatabasesXmlTags.ELT_DatabaseSchema 01144 + " " 01145 + DatabasesXmlTags.ATT_dynamicPrecision 01146 + "=\"" 01147 + DatabaseBackendSchemaConstants 01148 .getDynamicSchemaLevel(dynamicPrecision) + "\" " 01149 + DatabasesXmlTags.ATT_gatherSystemTables + "=\"" 01150 + (gatherSystemTables ? "true" : "false") + "\">"); 01151 if (this.schema != null && dynamicPrecision ==0) 01152 { 01153 info.append(schema.getXml()); 01154 } 01155 info.append("</" + DatabasesXmlTags.ELT_DatabaseSchema + ">"); 01156 if (rewritingRules != null) 01157 { 01158 int size = rewritingRules.size(); 01159 for (int i = 0; i < size; i++) 01160 info.append(((AbstractRewritingRule) rewritingRules.get(i)).getXml()); 01161 } 01162 if (connectionManagers != null) 01163 { 01164 if (connectionManagers.isEmpty() == false) 01165 { 01166 AbstractConnectionManager connectionManager; 01167 Iterator iter = connectionManagers.values().iterator(); 01168 while (iter.hasNext()) 01169 { 01170 connectionManager = (AbstractConnectionManager) iter.next(); 01171 info.append(connectionManager.getXml()); 01172 } 01173 } 01174 } 01175 info.append("</" + DatabasesXmlTags.ELT_DatabaseBackend + ">"); 01176 return info.toString(); 01177 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.hasStoredProcedure String  procedureName  ) 
 

Returns true if this backend has the given stored procedure in its schema. The caller must ensure that the database schema has been defined, using the setDatabaseSchema(DatabaseSchema, boolean)or checkDatabaseSchema()

引数:
procedureName The stored procedure name to look for
戻り値:
true if procedure name is found in the schema
DatabaseBackend.java426 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.schema.

参照元 org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.callStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_RR.execReadOnlyReadStoredProcedure(), と org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF.execReadOnlyReadStoredProcedure().

00427 { 00428 if (schema == null) 00429 throw new NullPointerException(Translate.get("backend.schema.not.set")); 00430 00431 return schema.hasProcedure(procedureName); 00432 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.hasTable String  table  ) 
 

Returns true if this backend has the given table in its schema. The caller must ensure that the database schema has been defined, using the setDatabaseSchema(DatabaseSchema, boolean)or checkDatabaseSchema()

引数:
table The table name to look for
戻り値:
true if tables is found in the schema
DatabaseBackend.java397 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.schema.

参照元 org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.execWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequest(), と org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequestWithKeys().

00398 { 00399 if (schema == null) 00400 throw new NullPointerException(Translate.get("backend.schema.not.set")); 00401 00402 return schema.hasTable(table); 00403 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.hasTables ArrayList  tables  ) 
 

Returns true if this backend has the given list of tables in its schema. The caller must ensure that the database schema has been defined, using the setDatabaseSchema(DatabaseSchema, boolean)or checkDatabaseSchema()methods.

引数:
tables the list of table names (ArrayList of String) to look for
戻り値:
true if all the tables are found
DatabaseBackend.java371 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.schema.

参照元 org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_RR.execReadRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF.execReadRequest(), と org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execReadRequest().

00372 { 00373 if (schema == null) 00374 throw new NullPointerException(Translate.get("backend.schema.not.set")); 00375 00376 if (tables == null) 00377 throw new IllegalArgumentException(Translate.get("backend.null.tables")); 00378 00379 int size = tables.size(); 00380 for (int i = 0; i < size; i++) 00381 { 00382 if (!schema.hasTable((String) tables.get(i))) 00383 return false; 00384 } 00385 return true; 00386 }

synchronized void org.objectweb.cjdbc.controller.backend.DatabaseBackend.initializeConnections  )  throws SQLException
 

Initializes the connection managers' connections. The caller must ensure that the driver has already been loaded else an exception will be thrown.

例外:
SQLException if an error occurs
DatabaseBackend.java442 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.connectionManagers, org.objectweb.cjdbc.controller.backend.DatabaseBackend.name, と org.objectweb.cjdbc.controller.backend.DatabaseBackend.url.

参照元 org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getAndCheckBackend().

00443 { 00444 if (connectionManagers.isEmpty()) 00445 throw new SQLException(Translate.get("backend.not.defined", new String[]{ 00446 name, url})); 00447 00448 AbstractConnectionManager connectionManager; 00449 Iterator iter = connectionManagers.values().iterator(); 00450 while (iter.hasNext()) 00451 { 00452 connectionManager = (AbstractConnectionManager) iter.next(); 00453 if (!connectionManager.isInitialized()) 00454 connectionManager.initializeConnections(); 00455 } 00456 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isBackuping  ) 
 

Returns the isBackuping value.

戻り値:
Returns the isBackuping.
DatabaseBackend.java1428 行で定義されています。
01429 { 01430 return state == BackendState.BACKUPING; 01431 }

final boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isDisabled  ) 
 

参照:
org.objectweb.cjdbc.common.jmx.mbeans.DatabaseBackendMBean.isDisabled()
DatabaseBackend.java678 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.setBackendLastKnownCheckpoint().

00679 { 00680 return state == BackendState.DISABLED; 00681 }

final boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isDisabling  ) 
 

Returns the isDisabling value.

戻り値:
Returns the isDisabling.
DatabaseBackend.java670 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_RR.chooseBackendForWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_LPRF.chooseBackendForWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.BeginTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequest(), と org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequestWithKeys().

00671 { 00672 return state == BackendState.DISABLING; 00673 }

final synchronized boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isInitialized  )  throws SQLException
 

Tests if this backend is enabled (active and synchronized).

戻り値:
true if this backend is enabled
例外:
SQLException if an error occurs
DatabaseBackend.java618 行で定義されています。
00619 { 00620 if (connectionManagers.isEmpty()) 00621 throw new SQLException(Translate.get("backend.null.connection.manager", 00622 new String[]{name, url})); 00623 Iterator iter = connectionManagers.values().iterator(); 00624 while (iter.hasNext()) 00625 { 00626 if (!((AbstractConnectionManager) iter.next()).isInitialized()) 00627 return false; 00628 } 00629 return true; 00630 }

final boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isKilled  ) 
 

Returns true if the backend cannot be used anymore

戻り値:
Returns true if the backend was removed from activity by the load balancer
DatabaseBackend.java689 行で定義されています。
00690 { 00691 return state == BackendState.UNKNOWN; 00692 }

final synchronized boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isReadEnabled  ) 
 

Tests if this backend is read enabled (active and synchronized).

戻り値:
true if this backend is enabled.
DatabaseBackend.java637 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.AbstractLoadBalancer.AbstractLoadBalancer(), org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_RR.chooseBackendForReadRequest(), org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_LPRF.chooseBackendForReadRequest(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.disableAllBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableAllBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.enableAllBackendsFromRecovery(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_RR.execReadOnlyReadStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF.execReadOnlyReadStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_RR.execReadRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF.execReadRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execReadRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_LPRF.executeLPRF(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_RR.executeRoundRobinRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_WRR.executeWRR(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getAndCheckBackend(), org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRoundRobin.getBackends(), org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRandom.getBackends(), と org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getDatabaseSchemaFromActiveBackendsAndRefreshDatabaseProductNames().

00638 { 00639 return state == BackendState.READ_ENABLED_WRITE_DISABLED 00640 || state == BackendState.READ_ENABLED_WRITE_ENABLED; 00641 }

final boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isRecovering  ) 
 

Returns the isRecovering value.

戻り値:
Returns the isRecovering.
DatabaseBackend.java660 行で定義されています。
00661 { 00662 return state == BackendState.RECOVERING; 00663 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isSchemaStatic  ) 
 

戻り値:
Returns the schemaIsStatic.
DatabaseBackend.java1190 行で定義されています。
01191 { 01192 return schemaIsStatic; 01193 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isStartedTransaction Long  tid  ) 
 

Returns true if the specified transaction has been started on this backend (a connection has been allocated for this transaction).

引数:
tid transaction identifier
戻り値:
true if the transaction has been started
DatabaseBackend.java607 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.commit(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.commit(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.commit(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.SelectRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.rollback(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.rollback(), と org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.rollback().

00608 { 00609 return activeTransactions.contains(tid); 00610 }

final boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isValidConnection Connection  connection  ) 
 

Check if the given connection is valid or not. This function issues the connectionTestStatement query on the connection and if it succeeds then the connection is declared valid. If an exception occurs, the connection is declared invalid.

引数:
connection the connection to test
戻り値:
true if the connection is valid
DatabaseBackend.java489 行で定義されています。

参照先 java.sql.Statement.executeQuery().

00490 { 00491 try 00492 { 00493 Statement s = connection.createStatement(); 00494 s.executeQuery(connectionTestStatement); 00495 } 00496 catch (SQLException e) 00497 { 00498 if ("25P02".equals(e.getSQLState()) 00499 || (e.getMessage() != null && e 00500 .getMessage() 00501 .indexOf( 00502 "current transaction is aborted, queries ignored until end of transaction block") > 0)) 00503 { 00504 // see bug item #300873 on the forge for details 00505 // postgres throws an exception if a query is issued after a request has 00506 // failed within a transaction, we now have to check for this exception 00507 // as it is means the connection is valid 00508 // 00509 // postgres versions after 7.4 will return the SQLState, whereas 00510 // postgres versions prior to 7.4 will have to be checked for the 00511 // message text 00512 return true; 00513 } 00514 return false; 00515 } 00516 return true; 00517 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isWriteCanBeEnabled  ) 
 

Returns the writeCanBeEnabled value.

戻り値:
Returns the writeCanBeEnabled.
DatabaseBackend.java1508 行で定義されています。
01509 { 01510 return writeCanBeEnabled; 01511 }

final synchronized boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.isWriteEnabled  ) 
 

Tests if this backend is write enabled (active and synchronized).

戻り値:
true if this backend is enabled.
DatabaseBackend.java648 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.AbstractLoadBalancer.AbstractLoadBalancer(), org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_RR.chooseBackendForWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_LPRF.chooseBackendForWriteRequest(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.disableBackendsForCheckpoint(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.execWriteRequestWithKeys(), org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRoundRobin.getBackends(), org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRandom.getBackends(), org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobin.getBackends(), と org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRandom.getBackends().

00649 { 00650 return state == BackendState.READ_ENABLED_WRITE_ENABLED 00651 || state == BackendState.READ_DISABLED_WRITE_ENABLED 00652 || state == BackendState.DISABLING; 00653 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.notifyJmx String  type  ) 
 

Sends JMX notification

引数:
type notification type
参照:
CjdbcNotificationList
DatabaseBackend.java1484 行で定義されています。
01485 { 01486 if (MBeanServerManager.isJmxEnabled()) 01487 { 01488 // Send notification 01489 Hashtable data = new Hashtable(); 01490 data.put(CjdbcNotificationList.DATA_DATABASE, this.name); 01491 data.put(CjdbcNotificationList.DATA_DRIVER, getDriverClassName()); 01492 String checkpoint = getLastKnownCheckpoint(); 01493 checkpoint = (checkpoint == null) ? "" : checkpoint; 01494 data.put(CjdbcNotificationList.DATA_CHECKPOINT, checkpoint); 01495 data.put(CjdbcNotificationList.DATA_NAME, getName()); 01496 data.put(CjdbcNotificationList.DATA_URL, getURL()); 01497 RmiConnector.broadcastNotification(this, type, 01498 CjdbcNotificationList.NOTIFICATION_LEVEL_INFO, Translate.get(type, 01499 getName()), data); 01500 } 01501 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.notifyStateChange  ) 
 

Notify the state of the backend has changed. This does two things: 1. Change the state of the backend stored in the recovery log 2. Sends a jmx notification. This method has all the data prefilled because we know all the parameters in advance, except the type of the notification.

参照:
CjdbcNotificationList
DatabaseBackend.java1470 行で定義されています。
01471 { 01472 if (stateListener != null) 01473 stateListener.changeState(this); 01474 01475 notifyJmx(getState()); 01476 }

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.removePendingRequest Object  request  ) 
 

Removes a pending request from this backend. Note that the underlying vector is synchronized.

引数:
request the request to remove
戻り値:
true if the request has been found and removed
DatabaseBackend.java935 行で定義されています。
00936 { 00937 return pendingRequests.remove(request); 00938 }

final String org.objectweb.cjdbc.controller.backend.DatabaseBackend.rewriteQuery String  sqlQuery  ) 
 

Rewrite the current query according to the rewriting rules.

引数:
sqlQuery request to rewrite
戻り値:
the rewritten SQL query according to rewriting rules.
DatabaseBackend.java1102 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.rewriting.AbstractRewritingRule.hasMatched, org.objectweb.cjdbc.controller.backend.rewriting.AbstractRewritingRule.isStopOnMatch(), と org.objectweb.cjdbc.controller.backend.rewriting.AbstractRewritingRule.rewrite.

01103 { 01104 if (rewritingRules == null) 01105 return sqlQuery; 01106 int size = rewritingRules.size(); 01107 for (int i = 0; i < size; i++) 01108 { 01109 AbstractRewritingRule rule = (AbstractRewritingRule) rewritingRules 01110 .get(i); 01111 sqlQuery = rule.rewrite(sqlQuery); 01112 if (rule.hasMatched()) 01113 { //Rule matched, query rewriten 01114 if (logger.isDebugEnabled()) 01115 logger.debug(Translate.get("backend.rewriting.query", sqlQuery)); 01116 if (rule.isStopOnMatch()) 01117 break; //Ok, stop here. 01118 } 01119 } 01120 return sqlQuery; 01121 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.setDatabaseSchema DatabaseSchema  databaseSchema,
boolean  isStatic
 

Sets the database schema.

引数:
databaseSchema the schema to set
isStatic true if the schema should be static
参照:
getDatabaseSchema
DatabaseBackend.java959 行で定義されています。
00960 { 00961 if (schema == null) 00962 { 00963 schemaIsStatic = isStatic; 00964 schema = databaseSchema; 00965 } 00966 else 00967 { 00968 if (!isStatic) 00969 schema = databaseSchema; 00970 } 00971 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.setDisabling  ) 
 

This is used when the backend must be disabled but currently open transactions must terminate. This is a transitional state. When disabling is complete the caller must set the backend state to disabled.

Reads are no more allowed on the backend and the state is updated so that isReadEnabled() returns false.

参照:
disable()

isReadEnabled()

非推奨:
not used anymore. Please use the setState method instead
DatabaseBackend.java798 行で定義されています。
00799 { 00800 setState(BackendState.DISABLING); 00801 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.setDynamicPrecision int  dynamicPrecision,
boolean  gatherSystemTables
 

引数:
dynamicPrecision The dynamicPrecision to set.
gatherSystemTables True if we must gather system tables
DatabaseBackend.java1259 行で定義されています。
01261 { 01262 this.dynamicPrecision = dynamicPrecision; 01263 this.gatherSystemTables = gatherSystemTables; 01264 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.setLastKnownCheckpoint String  checkpoint  ) 
 

setLastKnownCheckpoint for this backend

引数:
checkpoint the checkpoint
DatabaseBackend.java1311 行で定義されています。

参照元 org.objectweb.cjdbc.controller.requestmanager.RequestManager.disableBackendsForCheckpoint(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.setBackendLastKnownCheckpoint(), と org.objectweb.cjdbc.controller.requestmanager.RequestManager.setBackendsLastKnownCheckpointFromRecoveryLog().

01312 { 01313 this.lastKnownCheckpoint = checkpoint; 01314 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.setRewritingRules ArrayList  rewritingRules  ) 
 

Sets the rewritingRules value.

引数:
rewritingRules The rewritingRules to set.
DatabaseBackend.java1351 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.copy().

01352 { 01353 this.rewritingRules = rewritingRules; 01354 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.setSqlShortFormLength int  sqlShortFormLength  ) 
 

Sets the sqlShortFormLength value.

引数:
sqlShortFormLength The sqlShortFormLength to set.
DatabaseBackend.java323 行で定義されています。
00324 { 00325 this.sqlShortFormLength = sqlShortFormLength; 00326 }

synchronized void org.objectweb.cjdbc.controller.backend.DatabaseBackend.setState int  state  ) 
 

Set the state of a backend

引数:
state see BackendState for a possible list of the different state
参照:
org.objectweb.cjdbc.common.shared.BackendState
DatabaseBackend.java1439 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.state.

参照元 org.objectweb.cjdbc.controller.requestmanager.RequestManager.disableBackendsForCheckpoint().

01440 { 01441 switch (state) 01442 { 01443 case BackendState.READ_ENABLED_WRITE_DISABLED : 01444 case BackendState.READ_ENABLED_WRITE_ENABLED : 01445 case BackendState.READ_DISABLED_WRITE_ENABLED : 01446 case BackendState.DISABLING : 01447 case BackendState.BACKUPING : 01448 case BackendState.RECOVERING : 01449 case BackendState.DISABLED : 01450 case BackendState.UNKNOWN : 01451 this.state = state; 01452 if (logger.isDebugEnabled()) 01453 logger.debug(Translate.get("backend.state.changed", new String[]{ 01454 name, getState()})); 01455 notifyStateChange(); 01456 break; 01457 default : 01458 throw new IllegalArgumentException("Unknown backend state:" + state); 01459 } 01460 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.setStateListener BackendStateListener  stateListener  ) 
 

Sets the stateListener value.

引数:
stateListener The stateListener to set.
DatabaseBackend.java1518 行で定義されています。
01519 { 01520 this.stateListener = stateListener; 01521 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.startTransaction Long  tid  ) 
 

Signals that a transaction has been started on this backend. It means that a connection has been allocated for this transaction.

引数:
tid transaction identifier
DatabaseBackend.java547 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB.begin(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.SelectRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask.execute(), と org.objectweb.cjdbc.controller.loadbalancer.tasks.BeginTask.execute().

00548 { 00549 synchronized (activeTransactions) 00550 { 00551 totalTransactions++; 00552 activeTransactions.add(tid); 00553 } 00554 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.stopTransaction Long  tid  ) 
 

Signals that a transaction has been stopped on this backend. It means that the connection has been released for this transaction.

引数:
tid transaction identifier
DatabaseBackend.java562 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB.commit(), org.objectweb.cjdbc.controller.loadbalancer.tasks.RollbackTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.CommitTask.execute(), と org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB.rollback().

00563 { 00564 synchronized (activeTransactions) 00565 { 00566 if (!activeTransactions.remove(tid)) 00567 throw new IllegalArgumentException(Translate.get( 00568 "backend.transaction.not.started", new String[]{"" + tid, name})); 00569 // If this was the last open transaction, we notify people possibly 00570 // waiting on waitForAllTransactionsToComplete() 00571 if (activeTransactions.isEmpty()) 00572 { 00573 activeTransactions.notifyAll(); 00574 } 00575 } 00576 }

void org.objectweb.cjdbc.controller.backend.DatabaseBackend.waitForAllTransactionsToComplete  ) 
 

This method waits until all currently open transactions on this backend complete. If no transaction are currently running on this backend, this method immediately returns. DatabaseBackend.java583 行で定義されています。

参照元 org.objectweb.cjdbc.controller.requestmanager.RequestManager.disableBackendsForCheckpoint().

00584 { 00585 synchronized (activeTransactions) 00586 { 00587 if (activeTransactions.isEmpty()) 00588 return; 00589 else 00590 try 00591 { 00592 activeTransactions.wait(); 00593 } 00594 catch (InterruptedException ignore) 00595 { 00596 } 00597 } 00598 }


変数

transient ArrayList org.objectweb.cjdbc.controller.backend.DatabaseBackend.activeTransactions = new ArrayList() [private]
 

List of started transactions. DatabaseBackend.java126 行で定義されています。

transient HashMap org.objectweb.cjdbc.controller.backend.DatabaseBackend.connectionManagers [private]
 

Connection managers for this backend. DatabaseBackend.java120 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.initializeConnections().

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.connectionTestStatement [private]
 

SQL statement used to check if a connection is still valid DatabaseBackend.java111 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend().

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverClassName [private]
 

Database native JDBC driver class name. DatabaseBackend.java99 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend(), と org.objectweb.cjdbc.controller.backend.DatabaseBackend.equals().

transient DriverCompliance org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverCompliance [private]
 

Driver compliance to C-JDBC requirements DatabaseBackend.java102 行で定義されています。

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.driverPath [private]
 

Path for driver DatabaseBackend.java96 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend().

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.dynamicPrecision [private]
 

For metadata information generation DatabaseBackend.java141 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend().

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.gatherSystemTables = false [private]
 

DatabaseBackend.java142 行で定義されています。

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.lastKnownCheckpoint [private]
 

DatabaseBackend.java147 行で定義されています。

transient Trace org.objectweb.cjdbc.controller.backend.DatabaseBackend.logger [protected]
 

Logger instance. DatabaseBackend.java123 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend().

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.name [private]
 

Logical name assigned to this backend. DatabaseBackend.java93 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.equals(), と org.objectweb.cjdbc.controller.backend.DatabaseBackend.initializeConnections().

transient Vector org.objectweb.cjdbc.controller.backend.DatabaseBackend.pendingRequests = new Vector() [private]
 

List of pending requests. DatabaseBackend.java129 行で定義されています。

ArrayList org.objectweb.cjdbc.controller.backend.DatabaseBackend.rewritingRules [private]
 

List of AbstractRewritingRule objects. DatabaseBackend.java138 行で定義されています。

DatabaseSchema org.objectweb.cjdbc.controller.backend.DatabaseBackend.schema [private]
 

The schema of the database. DatabaseBackend.java114 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.getTables(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.hasStoredProcedure(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.hasTable(), と org.objectweb.cjdbc.controller.backend.DatabaseBackend.hasTables().

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.schemaIsStatic = false [private]
 

true if schema is static. DatabaseBackend.java117 行で定義されています。

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.sqlShortFormLength = 40 [private]
 

Short form of SQL statements to include in traces and exceptions DatabaseBackend.java145 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.getSQLShortFormLength().

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.state = BackendState.DISABLED [private]
 

The current state of the backend

参照:
org.objectweb.cjdbc.common.shared.BackendState
DatabaseBackend.java154 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.setState().

transient BackendStateListener org.objectweb.cjdbc.controller.backend.DatabaseBackend.stateListener [private]
 

DatabaseBackend.java156 行で定義されています。

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.totalReadRequest [private]
 

DatabaseBackend.java134 行で定義されています。

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.totalRequest [private]
 

Monitoring Values DatabaseBackend.java132 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend().

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.totalTransactions [private]
 

DatabaseBackend.java135 行で定義されています。

int org.objectweb.cjdbc.controller.backend.DatabaseBackend.totalWriteRequest [private]
 

DatabaseBackend.java133 行で定義されています。

String org.objectweb.cjdbc.controller.backend.DatabaseBackend.url [private]
 

Real URL to access the database (JDBC URL). DatabaseBackend.java105 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.equals(), と org.objectweb.cjdbc.controller.backend.DatabaseBackend.initializeConnections().

boolean org.objectweb.cjdbc.controller.backend.DatabaseBackend.writeCanBeEnabled [private]
 

A boolean to know if we should allow this backend to be enabled for write DatabaseBackend.java108 行で定義されています。

参照元 org.objectweb.cjdbc.controller.backend.DatabaseBackend.DatabaseBackend().


このクラスの説明は次のファイルから生成されました:
CJDBCversion1.0.4に対してTue Oct 12 15:16:35 2004に生成されました。 doxygen 1.3.8