[jboss-cvs] JBossAS SVN: r111772 - in projects/jboss-jca/trunk: deployers/src/main/java/org/jboss/jca/deployers/fungal and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jul 18 09:29:25 EDT 2011
Author: jesper.pedersen
Date: 2011-07-18 09:29:24 -0400 (Mon, 18 Jul 2011)
New Revision: 111772
Modified:
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ManagedConnectionPoolStatisticsImpl.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java
projects/jboss-jca/trunk/doc/userguide/en-US/modules/embedded.xml
projects/jboss-jca/trunk/embedded/src/main/java/org/jboss/jca/embedded/EmbeddedJCA.java
projects/jboss-jca/trunk/embedded/src/main/java/org/jboss/jca/embedded/SecurityActions.java
Log:
[JBJCA-628] [JBJCA-629] EntirePool and AvailableCount problems
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -1,6 +1,6 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2010, Red Hat Middleware LLC, and individual contributors
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
@@ -38,8 +38,6 @@
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentSkipListSet;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -99,22 +97,12 @@
/** The available connection event listeners */
private ArrayBlockingQueue<ConnectionListener> cls;
- /** The permits used to control who can checkout a connection */
- private ConcurrentMap<ConnectionListener, ConnectionListener> permits;
-
/** The checked out connections */
- private final ConcurrentSkipListSet<ConnectionListener> checkedOut =
- new ConcurrentSkipListSet<ConnectionListener>();
+ private ConcurrentSkipListSet<ConnectionListener> checkedOut;
- /** Whether the pool has been started */
- private AtomicBoolean started = new AtomicBoolean(false);
-
/** Whether the pool has been shutdown */
private AtomicBoolean shutdown = new AtomicBoolean(false);
- /** the max connections ever checked out **/
- private AtomicInteger maxUsedConnections = new AtomicInteger(0);
-
/** Statistics */
private ManagedConnectionPoolStatisticsImpl statistics;
@@ -153,16 +141,18 @@
this.log = pool.getLogger();
this.trace = log.isTraceEnabled();
this.cls = new ArrayBlockingQueue<ConnectionListener>(this.maxSize, true);
- this.permits = new ConcurrentHashMap<ConnectionListener, ConnectionListener>(this.maxSize);
+ this.checkedOut = new ConcurrentSkipListSet<ConnectionListener>();
this.statistics = new ManagedConnectionPoolStatisticsImpl(maxSize);
// Schedule managed connection pool for prefill
- if (pc.isPrefill() && p instanceof PrefillPool)
+ if (pc.isPrefill() && p instanceof PrefillPool && pc.getMinSize() > 0)
{
PoolFiller.fillPool(this);
}
reenable();
+
+ statistics.setMaxWaitCount(-1);
}
/**
@@ -176,7 +166,7 @@
/**
* {@inheritDoc}
*/
- public boolean isEmpty()
+ public synchronized boolean isEmpty()
{
return cls.size() == 0 && checkedOut.size() == 0;
}
@@ -204,13 +194,6 @@
shutdown.set(false);
}
- private synchronized long getAvailableConnections()
- {
- int result = maxSize - permits.size();
-
- return (result >= 0) ? result : 0;
- }
-
/**
* {@inheritDoc}
*/
@@ -223,7 +206,7 @@
boolean verifyConnectionListener = true;
long startWait = System.currentTimeMillis();
- if (getAvailableConnections() > 0)
+ if (cls.size() > 0)
{
if (shutdown.get())
throw new RetryableUnavailableException(bundle.thePoolHasBeenShutdown());
@@ -234,6 +217,7 @@
try
{
cl = cls.poll(poolConfiguration.getBlockingTimeout(), TimeUnit.MILLISECONDS);
+ statistics.deltaTotalBlockingTime(System.currentTimeMillis() - startWait);
}
catch (InterruptedException ie)
{
@@ -248,13 +232,6 @@
// No, the pool was empty, so we have to make a new one.
cl = createConnectionEventListener(subject, cri);
- // Started is atomic, so pool filler won't be scheduled twice
- if (!started.getAndSet(true))
- {
- if (poolConfiguration.getMinSize() > 0)
- PoolFiller.fillPool(this);
- }
-
if (trace)
log.trace("supplying new ManagedConnection: " + cl);
@@ -273,6 +250,7 @@
try
{
cl = cls.poll(poolConfiguration.getBlockingTimeout(), TimeUnit.MILLISECONDS);
+ statistics.deltaTotalBlockingTime(System.currentTimeMillis() - startWait);
if (shutdown.get())
throw new RetryableUnavailableException(bundle.thePoolHasBeenShutdown());
@@ -294,12 +272,10 @@
{
cl = createConnectionEventListener(subject, cri);
- // Started is atomic, so pool filler won't be scheduled twice
- if (!started.getAndSet(true))
- {
- if (poolConfiguration.getMinSize() > 0)
- PoolFiller.fillPool(this);
- }
+ if (poolConfiguration.isPrefill() &&
+ pool instanceof PrefillPool &&
+ poolConfiguration.getMinSize() > 0)
+ PoolFiller.fillPool(this);
if (trace)
log.trace("supplying new ManagedConnection: " + cl);
@@ -319,16 +295,11 @@
// Register the connection listener
checkedOut.add(cl);
- // Update max used connections
- int size = maxSize - permits.size();
- if (size > maxUsedConnections.get())
- maxUsedConnections.set(size);
+ // Update in used statistics
+ statistics.setInUsedCount(checkedOut.size());
if (!verifyConnectionListener)
{
- // Register the connection listener with permits
- permits.put(cl, cl);
-
// Return connection listener
return cl;
}
@@ -344,9 +315,6 @@
if (trace)
log.trace("supplying ManagedConnection from pool: " + cl);
- // Register the connection listener with permits
- permits.put(cl, cl);
-
// Return connection listener
return cl;
}
@@ -359,6 +327,7 @@
log.destroyingConnectionNotSuccessfullyMatched(cl, mcf);
checkedOut.remove(cl);
+ statistics.setInUsedCount(checkedOut.size());
doDestroy(cl);
cl = null;
@@ -368,6 +337,7 @@
log.throwableWhileTryingMatchManagedConnection(cl, t);
checkedOut.remove(cl);
+ statistics.setInUsedCount(checkedOut.size());
doDestroy(cl);
cl = null;
@@ -389,12 +359,6 @@
if (trace)
log.trace("ManagedConnection is being returned after it was destroyed" + cl);
- if (permits.containsKey(cl))
- {
- // release connection listener
- permits.remove(cl);
- }
-
return;
}
@@ -416,6 +380,7 @@
kill = true;
checkedOut.remove(cl);
+ statistics.setInUsedCount(checkedOut.size());
// This is really an error
if (!kill && cls.size() >= poolConfiguration.getMaxSize())
@@ -456,12 +421,6 @@
}
}
- if (permits.containsKey(cl))
- {
- // release connection listener
- permits.remove(cl);
- }
-
if (kill)
{
if (trace)
@@ -489,15 +448,23 @@
if (trace)
log.trace("Flushing pool checkedOut=" + checkedOut + " inPool=" + cls);
- // Mark checked out connections as requiring destruction
- for (Iterator<ConnectionListener> i = checkedOut.iterator(); i.hasNext();)
+ if (kill)
{
- ConnectionListener cl = i.next();
+ // Mark checked out connections as requiring destruction
+ while (checkedOut.size() > 0)
+ {
+ ConnectionListener cl = checkedOut.pollFirst();
- if (trace)
- log.trace("Flush marking checked out connection for destruction " + cl);
+ if (trace)
+ log.trace("Flush marking checked out connection for destruction " + cl);
- cl.setState(ConnectionState.DESTROY);
+ cl.setState(ConnectionState.DESTROY);
+
+ if (destroy == null)
+ destroy = new ArrayList<ConnectionListener>(1);
+
+ destroy.add(cl);
+ }
}
// Destroy connections in the pool
@@ -514,18 +481,22 @@
// We need to destroy some connections
if (destroy != null)
{
- for (int i = 0; i < destroy.size(); ++i)
+ for (ConnectionListener destroyCl : destroy)
{
- ConnectionListener l = destroy.get(i);
if (trace)
- log.trace("Destroying flushed connection " + l);
+ log.trace("Destroying flushed connection " + destroyCl);
- doDestroy(l);
+ doDestroy(destroyCl);
}
// We destroyed something, check the minimum.
- if (!shutdown.get() && poolConfiguration.getMinSize() > 0)
+ if (!shutdown.get() &&
+ poolConfiguration.getMinSize() > 0 &&
+ poolConfiguration.isPrefill() &&
+ pool instanceof PrefillPool)
+ {
PoolFiller.fillPool(this);
+ }
}
}
@@ -544,6 +515,8 @@
ConnectionListener cl = cls.peek();
if (cl != null && cl.isTimedOut(timeout) && shouldRemove())
{
+ statistics.deltaTimedOut();
+
// We need to destroy this one
if (destroy == null)
destroy = new ArrayList<ConnectionListener>(1);
@@ -582,8 +555,13 @@
}
// We destroyed something, check the minimum.
- if (!shutdown.get() && poolConfiguration.getMinSize() > 0)
+ if (!shutdown.get() &&
+ poolConfiguration.getMinSize() > 0 &&
+ poolConfiguration.isPrefill() &&
+ pool instanceof PrefillPool)
+ {
PoolFiller.fillPool(this);
+ }
// Empty pool
if (pool != null)
@@ -618,6 +596,7 @@
try
{
cl = createConnectionEventListener(defaultSubject, defaultCri);
+ statistics.setInUsedCount(checkedOut.size() + 1);
if ((checkedOut.size() + cls.size()) < poolConfiguration.getMinSize())
{
@@ -676,13 +655,19 @@
private ConnectionListener createConnectionEventListener(Subject subject, ConnectionRequestInfo cri)
throws ResourceException
{
+ long start = System.currentTimeMillis();
+
ManagedConnection mc = mcf.createManagedConnection(subject, cri);
+
+ statistics.deltaTotalCreationTime(System.currentTimeMillis() - start);
+ statistics.deltaCreatedCount();
try
{
return clf.createConnectionListener(mc, this);
}
catch (ResourceException re)
{
+ statistics.deltaDestroyedCount();
mc.destroy();
throw re;
}
@@ -701,6 +686,7 @@
return;
}
+ statistics.deltaDestroyedCount();
cl.setState(ConnectionState.DESTROYED);
try
{
@@ -793,7 +779,11 @@
}
finally
{
- if (anyDestroyed && !shutdown.get() && poolConfiguration.getMinSize() > 0)
+ if (anyDestroyed &&
+ !shutdown.get() &&
+ poolConfiguration.getMinSize() > 0 &&
+ poolConfiguration.isPrefill() &&
+ pool instanceof PrefillPool)
{
PoolFiller.fillPool(this);
}
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ManagedConnectionPoolStatisticsImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ManagedConnectionPoolStatisticsImpl.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ManagedConnectionPoolStatisticsImpl.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -71,6 +71,7 @@
private AtomicInteger timedOut;
private AtomicLong totalBlockingTime;
private AtomicLong totalCreationTime;
+ private AtomicInteger inUseCount;
/**
* Constructor
@@ -140,6 +141,7 @@
this.timedOut = new AtomicInteger(0);
this.totalBlockingTime = new AtomicLong(0);
this.totalCreationTime = new AtomicLong(0);
+ this.inUseCount = new AtomicInteger(0);
}
/**
@@ -282,7 +284,7 @@
*/
public int getAvailableCount()
{
- return maxPoolSize - getActiveCount();
+ return maxPoolSize - inUseCount.get();
}
/**
@@ -343,6 +345,16 @@
}
/**
+ * Set in used count
+ * @param v The value
+ */
+ public void setInUsedCount(int v)
+ {
+ inUseCount.set(v);
+ setMaxUsedCount(v);
+ }
+
+ /**
* Set max used count
* @param v The value
*/
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -249,7 +249,7 @@
{
cl = cls.remove(clsSize - 1);
checkedOut.add(cl);
- statistics.setMaxUsedCount(maxSize - permits.availablePermits());
+ statistics.setInUsedCount(checkedOut.size());
}
}
if (cl != null)
@@ -280,6 +280,7 @@
synchronized (cls)
{
checkedOut.remove(cl);
+ statistics.setInUsedCount(checkedOut.size());
}
doDestroy(cl);
@@ -292,6 +293,7 @@
synchronized (cls)
{
checkedOut.remove(cl);
+ statistics.setInUsedCount(checkedOut.size());
}
doDestroy(cl);
@@ -321,7 +323,7 @@
synchronized (cls)
{
checkedOut.add(cl);
- statistics.setMaxUsedCount(maxSize - permits.availablePermits());
+ statistics.setInUsedCount(checkedOut.size());
}
if (trace)
@@ -339,6 +341,7 @@
synchronized (cls)
{
checkedOut.remove(cl);
+ statistics.setInUsedCount(checkedOut.size());
}
permits.release();
@@ -404,6 +407,7 @@
kill = true;
checkedOut.remove(cl);
+ statistics.setInUsedCount(checkedOut.size());
// This is really an error
if (!kill && isSize(poolConfiguration.getMaxSize() + 1))
@@ -488,7 +492,15 @@
destroy = new ArrayList<ConnectionListener>(1);
destroy.add(cl);
+
+ if (clPermits.containsKey(cl))
+ {
+ clPermits.remove(cl);
+ permits.release();
+ }
}
+
+ statistics.setInUsedCount(checkedOut.size());
}
// Destroy connections in the pool
@@ -646,7 +658,7 @@
log.trace("Filling pool cl=" + cl);
cls.add(cl);
- statistics.setMaxUsedCount(maxSize - permits.availablePermits());
+ statistics.setInUsedCount(checkedOut.size() + 1);
}
}
catch (ResourceException re)
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -396,11 +396,12 @@
* Register management view of a connector in JMX
* @param mgtConnector The management view of the connector
* @param server The MBeanServer instance
+ * @param domain The management domain
* @return The ObjectName's generated for this connector
* @exception JMException Thrown in case of an error
*/
protected List<ObjectName> registerManagementView(org.jboss.jca.core.api.management.Connector mgtConnector,
- MBeanServer server)
+ MBeanServer server, String domain)
throws JMException
{
List<ObjectName> ons = null;
@@ -410,7 +411,7 @@
if (server != null)
{
ons = new ArrayList<ObjectName>();
- String baseName = server.getDefaultDomain() + ":deployment=" + mgtConnector.getUniqueId();
+ String baseName = domain + ":deployment=" + mgtConnector.getUniqueId();
if (mgtConnector.getResourceAdapter() != null)
{
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -211,7 +211,9 @@
uniqueJdbcLocalId, uniqueJdbcXAId,
dataSources, parent);
- List<ObjectName> onames = registerManagementView(c.getDataSources(), kernel.getMBeanServer());
+ List<ObjectName> onames = registerManagementView(c.getDataSources(),
+ kernel.getMBeanServer(),
+ kernel.getName());
return new DsXmlDeployment(c.getURL(), c.getDeploymentName(),
c.getCfs(), c.getCfJndiNames(),
@@ -365,11 +367,12 @@
* Register management view of datasources in JMX
* @param mgtDses The management view of the datasources
* @param server The MBeanServer instance
+ * @param domain The management domain
* @return The ObjectName's generated for these datasources
* @exception JMException Thrown in case of an error
*/
private List<ObjectName> registerManagementView(org.jboss.jca.core.api.management.DataSource[] mgtDses,
- MBeanServer server)
+ MBeanServer server, String domain)
throws JMException
{
List<ObjectName> ons = null;
@@ -385,7 +388,7 @@
if (jndiName.indexOf("/") != -1)
jndiName = jndiName.substring(jndiName.lastIndexOf("/") + 1);
- String baseName = server.getDefaultDomain() + ":deployment=" + jndiName;
+ String baseName = domain + ":deployment=" + jndiName;
if (mgtDs.getPoolConfiguration() != null)
{
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -273,7 +273,9 @@
CommonDeployment c = createObjectsAndInjectValue(url, deploymentName, root, cl, cmd, ijmd);
- List<ObjectName> ons = registerManagementView(c.getConnector(), kernel.getMBeanServer());
+ List<ObjectName> ons = registerManagementView(c.getConnector(),
+ kernel.getMBeanServer(),
+ kernel.getName());
JndiStrategy jndiStrategy = ((RAConfiguration) getConfiguration()).getJndiStrategy();
ResourceAdapterRepository resourceAdapterRepository =
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -171,7 +171,9 @@
List<ObjectName> ons = null;
if (c.isActivateDeployment())
- ons = registerManagementView(c.getConnector(), kernel.getMBeanServer());
+ ons = registerManagementView(c.getConnector(),
+ kernel.getMBeanServer(),
+ kernel.getName());
JndiStrategy jndiStrategy = ((RAConfiguration) getConfiguration()).getJndiStrategy();
MetadataRepository metadataRepository = ((RAConfiguration) getConfiguration()).getMetadataRepository();
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -284,7 +284,9 @@
List<ObjectName> ons = null;
if (c.isActivateDeployment())
- ons = registerManagementView(c.getConnector(), kernel.getMBeanServer());
+ ons = registerManagementView(c.getConnector(),
+ kernel.getMBeanServer(),
+ kernel.getName());
JndiStrategy jndiStrategy = ((RAConfiguration) getConfiguration()).getJndiStrategy();
MetadataRepository metadataRepository = ((RAConfiguration) getConfiguration()).getMetadataRepository();
Modified: projects/jboss-jca/trunk/doc/userguide/en-US/modules/embedded.xml
===================================================================
--- projects/jboss-jca/trunk/doc/userguide/en-US/modules/embedded.xml 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/doc/userguide/en-US/modules/embedded.xml 2011-07-18 13:29:24 UTC (rev 111772)
@@ -128,6 +128,10 @@
<para>IronJacamar Embedded supports both a simple and an advanced usage model, using pre-assembled
resource adapter archives (.rar) or dynamic resource adapter archives based on ShrinkWrap.</para>
+ <para>The embedded environment supports registering resource adapters and datasources in the platform
+ <code>MBeanServer</code> by setting the system property
+ <code>ironjacamar.embedded.management</code> to <code>true</code> before starting the environment.</para>
+
<section id="embedded_usage_simple">
<title>Simple usage</title>
Modified: projects/jboss-jca/trunk/embedded/src/main/java/org/jboss/jca/embedded/EmbeddedJCA.java
===================================================================
--- projects/jboss-jca/trunk/embedded/src/main/java/org/jboss/jca/embedded/EmbeddedJCA.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/embedded/src/main/java/org/jboss/jca/embedded/EmbeddedJCA.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -96,11 +96,16 @@
order.add("-ra.xml");
order.add("-ds.xml");
+ boolean management =
+ Boolean.valueOf(SecurityActions.getSystemProperty("ironjacamar.embedded.management", "false"));
+
KernelConfiguration kernelConfiguration = new KernelConfiguration();
kernelConfiguration = kernelConfiguration.name("iron.jacamar");
kernelConfiguration = kernelConfiguration.home(null);
kernelConfiguration = kernelConfiguration.classLoader(ClassLoaderFactory.TYPE_PARENT_FIRST);
- kernelConfiguration = kernelConfiguration.management(false);
+ kernelConfiguration = kernelConfiguration.management(management);
+ if (management)
+ kernelConfiguration = kernelConfiguration.usePlatformMBeanServer(true);
kernelConfiguration = kernelConfiguration.parallelDeploy(false);
kernelConfiguration = kernelConfiguration.remoteAccess(false);
kernelConfiguration = kernelConfiguration.hotDeployment(false);
Modified: projects/jboss-jca/trunk/embedded/src/main/java/org/jboss/jca/embedded/SecurityActions.java
===================================================================
--- projects/jboss-jca/trunk/embedded/src/main/java/org/jboss/jca/embedded/SecurityActions.java 2011-07-18 13:28:15 UTC (rev 111771)
+++ projects/jboss-jca/trunk/embedded/src/main/java/org/jboss/jca/embedded/SecurityActions.java 2011-07-18 13:29:24 UTC (rev 111772)
@@ -55,6 +55,23 @@
}
/**
+ * Get a system property
+ * @param name The property name
+ * @param value The default property value
+ * @return The property value
+ */
+ static String getSystemProperty(final String name, final String value)
+ {
+ return (String)AccessController.doPrivileged(new PrivilegedAction<Object>()
+ {
+ public Object run()
+ {
+ return System.getProperty(name, value);
+ }
+ });
+ }
+
+ /**
* Set a system property
* @param name The property name
* @param value The property value
More information about the jboss-cvs-commits
mailing list