/** * Get an attribute value for the given environment. Check JEMBeanHelper.getNeedReset() after this * call because the helper may detect that the environment has changed and that the MBean metadata * should be reset. * * @param targetEnv The target JE environment. May be null if the environment is not open. * @param attributeName attribute name. * @return attribute value. */ public Object getAttribute(Environment targetEnv, String attributeName) throws AttributeNotFoundException, MBeanException { /* Sanity check. */ if (attributeName == null) { throw new AttributeNotFoundException("Attribute name cannot be null"); } /* These attributes are available regardless of environment state. */ try { if (attributeName.equals(ATT_ENV_HOME)) { return environmentHome.getCanonicalPath(); } else if (attributeName.equals(ATT_OPEN)) { boolean envIsOpen = (targetEnv != null); resetIfOpenStateChanged(envIsOpen); return new Boolean(envIsOpen); } else if (attributeName.equals(ATT_SET_READ_ONLY)) { return new Boolean(openConfig.getReadOnly()); } else if (attributeName.equals(ATT_SET_TRANSACTIONAL)) { return new Boolean(openConfig.getTransactional()); } else if (attributeName.equals(ATT_SET_SERIALIZABLE)) { return new Boolean(openConfig.getTxnSerializableIsolation()); } else { /* The rest are JE environment attributes. */ if (targetEnv != null) { EnvironmentConfig config = targetEnv.getConfig(); if (attributeName.equals(ATT_IS_READ_ONLY)) { return new Boolean(config.getReadOnly()); } else if (attributeName.equals(ATT_IS_TRANSACTIONAL)) { return new Boolean(config.getTransactional()); } else if (attributeName.equals(ATT_CACHE_SIZE)) { return new Long(config.getCacheSize()); } else if (attributeName.equals(ATT_CACHE_PERCENT)) { return new Integer(config.getCachePercent()); } else if (attributeName.equals(ATT_LOCK_TIMEOUT)) { return new Long(config.getLockTimeout()); } else if (attributeName.equals(ATT_IS_SERIALIZABLE)) { return new Boolean(config.getTxnSerializableIsolation()); } else if (attributeName.equals(ATT_TXN_TIMEOUT)) { return new Long(config.getTxnTimeout()); } else { throw new AttributeNotFoundException("attribute " + attributeName + " is not valid."); } } return null; } } catch (Exception e) { /* * Add both the message and the exception for easiest deciphering * of the problem. Sometimes the original exception stacktrace gets * hidden in server logs. */ throw new MBeanException(e, e.getMessage()); } }
private CurrentTransaction(Environment env) { this.env = env; try { EnvironmentConfig config = env.getConfig(); txnMode = config.getTransactional(); lockingMode = DbCompat.getInitializeLocking(config); if (txnMode || lockingMode) { writeLockMode = LockMode.RMW; } else { writeLockMode = LockMode.DEFAULT; } cdbMode = DbCompat.getInitializeCDB(config); if (cdbMode) { localCdbCursors = new ThreadLocal(); } } catch (DatabaseException e) { throw new RuntimeExceptionWrapper(e); } }
/** * Get MBean attribute metadata for this environment. * * @param targetEnv The target JE environment. May be null if the environment is not open. * @return list of MBeanAttributeInfo objects describing the available attributes. */ public List getAttributeList(Environment targetEnv) { /* Turn off reset because the mbean metadata is being refreshed. */ setNeedReset(false); ArrayList attrList = new ArrayList(); /* Add attributes for all JE environments. */ for (int i = 0; i < COMMON_ATTR.length; i++) { attrList.add(COMMON_ATTR[i]); } if (targetEnv == null) { if (canConfigure) { /* Add attributes for configuring an environment. */ for (int i = 0; i < CREATE_ATTR.length; i++) { attrList.add(CREATE_ATTR[i]); } } } else { /* Add attributes for an open environment. */ for (int i = 0; i < OPEN_ATTR.length; i++) { attrList.add(OPEN_ATTR[i]); } /* Add attributes for an open, transactional environment. */ try { EnvironmentConfig config = targetEnv.getConfig(); if (config.getTransactional()) { for (int i = 0; i < TRANSACTIONAL_ATTR.length; i++) { attrList.add(TRANSACTIONAL_ATTR[i]); } } } catch (DatabaseException ignore) { /* ignore */ } } return attrList; }
/** * Get mbean operation metadata for this environment. * * @param targetEnv The target JE environment. May be null if the environment is not open. * @return List of MBeanOperationInfo describing available operations. */ public List getOperationList(Environment targetEnv) { setNeedReset(false); List operationList = new ArrayList(); if (targetEnv != null) { /* * These operations are only available if the environment is * open. */ operationList.add(OP_CLEAN_INFO); operationList.add(OP_EVICT_INFO); operationList.add(OP_ENV_STAT_INFO); operationList.add(OP_LOCK_STAT_INFO); operationList.add(OP_DB_NAMES_INFO); operationList.add(OP_DB_STAT_INFO); /* Add checkpoint only for transactional environments. */ boolean isTransactional = false; try { EnvironmentConfig config = targetEnv.getConfig(); isTransactional = config.getTransactional(); } catch (DatabaseException e) { /* Don't make any operations available. */ return new ArrayList(); } if (isTransactional) { operationList.add(OP_CHECKPOINT_INFO); operationList.add(OP_TXN_STAT_INFO); } else { operationList.add(OP_SYNC_INFO); } } return operationList; }