[jboss-cvs] JBossAS SVN: r110696 - in projects/jboss-jca/trunk: core/src/main/java/org/jboss/jca/core/connectionmanager and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Feb 17 09:22:37 EST 2011
Author: maeste
Date: 2011-02-17 09:22:36 -0500 (Thu, 17 Feb 2011)
New Revision: 110696
Modified:
projects/jboss-jca/trunk/core/.classpath
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java
projects/jboss-jca/trunk/deployers/.classpath
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java
Log:
Security deployers impl
Modified: projects/jboss-jca/trunk/core/.classpath
===================================================================
--- projects/jboss-jca/trunk/core/.classpath 2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/core/.classpath 2011-02-17 14:22:36 UTC (rev 110696)
@@ -10,11 +10,8 @@
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-common-core.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-integration.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-jaspi-api.jar"/>
- <classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-security-spi-bare.jar"/>
- <classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-security-spi.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-threads.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-transaction-api.jar"/>
- <classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jbosssx.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jnpserver.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/validation-api.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/embedded/shrinkwrap-api.jar"/>
@@ -25,5 +22,6 @@
<classpathentry combineaccessrules="false" kind="src" path="/ironjacamar-embedded"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jbossjts-integration.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jbossjts.jar"/>
+ <classpathentry kind="lib" path="/ironjacamar-parent/lib/common/picketbox.jar"/>
<classpathentry kind="output" path="eclipse-target/classes"/>
</classpath>
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java 2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java 2011-02-17 14:22:36 UTC (rev 110696)
@@ -31,6 +31,8 @@
import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
import javax.transaction.TransactionManager;
+import org.jboss.security.SubjectFactory;
+
/**
* The connection manager factory.
* @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
@@ -48,13 +50,15 @@
* Create a connection manager
* @param tsl The transaction support level
* @param pool The pool for the connection manager
+ * @param subjectFactory the subjectFactory for connection manager
* @param allocationRetry The allocation retry value
* @param allocationRetryWaitMillis The allocation retry millis value
* @return The connection manager instance
*/
public NoTxConnectionManager createNonTransactional(final TransactionSupportLevel tsl,
final Pool pool,
- final Integer allocationRetry,
+ final SubjectFactory subjectFactory,
+ final Integer allocationRetry,
final Long allocationRetryWaitMillis)
{
if (tsl == null)
@@ -81,6 +85,8 @@
throw new IllegalArgumentException("Unknown transaction support level " + tsl);
}
+ cm.setSubjectFactory(subjectFactory);
+
setProperties(cm, pool, allocationRetry, allocationRetryWaitMillis, null);
setNoTxProperties(cm);
@@ -91,6 +97,7 @@
* Create a transactional connection manager
* @param tsl The transaction support level
* @param pool The pool for the connection manager
+ * @param subjectFactory the subjectFactory for connection manager
* @param allocationRetry The allocation retry value
* @param allocationRetryWaitMillis The allocation retry millis value
* @param tm The transaction manager
@@ -103,6 +110,7 @@
*/
public TxConnectionManager createTransactional(final TransactionSupportLevel tsl,
final Pool pool,
+ final SubjectFactory subjectFactory,
final Integer allocationRetry,
final Long allocationRetryWaitMillis,
final TransactionManager tm,
@@ -140,6 +148,8 @@
throw new IllegalArgumentException("Unknown transaction support level " + tsl);
}
+ cm.setSubjectFactory(subjectFactory);
+
setProperties(cm, pool, allocationRetry, allocationRetryWaitMillis, tm);
setTxProperties(cm, interleaving, xaResourceTimeout, isSameRMOverride, wrapXAResource, padXid);
handleTxIntegration(tm);
@@ -213,11 +223,11 @@
if (padXid != null)
cm.setPadXid(padXid.booleanValue());
}
-
+
/**
* Associate the transaction synchronizer with the transaction
* manager.
- *
+ *
* @param tm TransactionManager
*/
public void handleTxIntegration(final TransactionManager tm)
Modified: projects/jboss-jca/trunk/deployers/.classpath
===================================================================
--- projects/jboss-jca/trunk/deployers/.classpath 2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/deployers/.classpath 2011-02-17 14:22:36 UTC (rev 110696)
@@ -33,5 +33,6 @@
<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-logmanager.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/embedded/shrinkwrap-impl-base.jar"/>
<classpathentry kind="lib" path="/ironjacamar-parent/lib/embedded/shrinkwrap-spi.jar"/>
+ <classpathentry kind="lib" path="/ironjacamar-parent/lib/common/picketbox.jar"/>
<classpathentry kind="output" path="eclipse-target/classes"/>
</classpath>
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java 2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java 2011-02-17 14:22:36 UTC (rev 110696)
@@ -275,7 +275,7 @@
// Select the correct connection manager
TransactionSupportLevel tsl = TransactionSupportLevel.LocalTransaction;
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
- ConnectionManager cm = cmf.createTransactional(tsl, pool, allocationRetry, allocationRetryWaitMillis,
+ ConnectionManager cm = cmf.createTransactional(tsl, pool, null, allocationRetry, allocationRetryWaitMillis,
getTransactionManager(), null, null, null, null, null);
cm.setJndiName(jndiName);
@@ -366,7 +366,7 @@
// Select the correct connection manager
TransactionSupportLevel tsl = TransactionSupportLevel.XATransaction;
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
- ConnectionManager cm = cmf.createTransactional(tsl, pool, allocationRetry, allocationRetryWaitMillis,
+ ConnectionManager cm = cmf.createTransactional(tsl, pool, null, allocationRetry, allocationRetryWaitMillis,
getTransactionManager(), interleaving, xaResourceTimeout, isSameRMOverride, wrapXAResource, padXid);
cm.setJndiName(jndiName);
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java 2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java 2011-02-17 14:22:36 UTC (rev 110696)
@@ -25,6 +25,7 @@
import org.jboss.jca.common.api.metadata.common.CommonAdminObject;
import org.jboss.jca.common.api.metadata.common.CommonConnDef;
import org.jboss.jca.common.api.metadata.common.CommonPool;
+import org.jboss.jca.common.api.metadata.common.CommonSecurity;
import org.jboss.jca.common.api.metadata.common.CommonTimeOut;
import org.jboss.jca.common.api.metadata.common.CommonValidation;
import org.jboss.jca.common.api.metadata.common.CommonXaPool;
@@ -83,6 +84,7 @@
import javax.transaction.TransactionManager;
import org.jboss.logging.Logger;
+import org.jboss.security.SubjectFactory;
/**
* An abstract resource adapter deployer which contains common functionality
@@ -872,23 +874,47 @@
PoolFactory pf = new PoolFactory();
Boolean noTxSeparatePool = Boolean.FALSE;
+ CommonSecurity security = null;
if (cdRaXml != null && cdRaXml.getPool() != null && cdRaXml.isXa())
{
CommonXaPool ijXaPool = (CommonXaPool) cdRaXml.getPool();
-
+ security = cdRaXml.getSecurity();
if (ijXaPool != null)
noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
}
else if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
{
CommonXaPool ijXaPool = (CommonXaPool) ijCD.getPool();
-
+ security = ijCD.getSecurity();
if (ijXaPool != null)
noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
}
- Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, noTxSeparatePool.booleanValue());
+ PoolStrategy strategy= PoolStrategy.ONE_POOL;
+ String securityDomain = null;
+ if (security != null) {
+ if (security.isApplication())
+ {
+ strategy = PoolStrategy.POOL_BY_CRI;
+ }
+ else if (security.getSecurityDomain() != null &&
+ security.getSecurityDomain().trim().length() != 0)
+ {
+ strategy = PoolStrategy.POOL_BY_SUBJECT;
+ securityDomain = security.getSecurityDomain();
+ }
+ else if (security.getSecurityDomainAndApplication() != null &&
+ security.getSecurityDomainAndApplication().trim().length() != 0)
+ {
+ strategy = PoolStrategy.POOL_BY_SUBJECT_AND_CRI;
+ securityDomain = security.getSecurityDomainAndApplication();
+ }
+
+ }
+
+ Pool pool = pf.create(strategy, mcf, pc, noTxSeparatePool.booleanValue());
+
// Add a connection manager
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
ConnectionManager cm = null;
@@ -947,7 +973,9 @@
// Select the correct connection manager
if (tsl == TransactionSupportLevel.NoTransaction)
{
- cm = cmf.createNonTransactional(tsl, pool, allocationRetry, allocationRetryWaitMillis);
+ cm = cmf.createNonTransactional(tsl, pool, getSubjectFactory(securityDomain),
+ allocationRetry,
+ allocationRetryWaitMillis);
}
else
{
@@ -986,7 +1014,8 @@
}
}
- cm = cmf.createTransactional(tsl, pool, allocationRetry, allocationRetryWaitMillis,
+ cm = cmf.createTransactional(tsl, pool, getSubjectFactory(securityDomain), allocationRetry,
+ allocationRetryWaitMillis,
getTransactionManager(), interleaving, xaResourceTimeout, isSameRMOverride,
wrapXAResource, padXid);
}
@@ -1178,24 +1207,46 @@
PoolFactory pf = new PoolFactory();
Boolean noTxSeparatePool = Boolean.FALSE;
+ CommonSecurity security = null;
if (cdRaXml != null && cdRaXml.getPool() != null && cdRaXml.isXa())
{
CommonXaPool ijXaPool = (CommonXaPool) cdRaXml.getPool();
-
+ security = cdRaXml.getSecurity();
if (ijXaPool != null)
noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
}
else if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
{
CommonXaPool ijXaPool = (CommonXaPool) ijCD.getPool();
-
+ security = ijCD.getSecurity();
if (ijXaPool != null)
noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
}
- Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc,
- noTxSeparatePool.booleanValue());
+ PoolStrategy strategy = PoolStrategy.ONE_POOL;
+ String securityDomain = null;
+ if (security != null) {
+ if (security.isApplication())
+ {
+ strategy = PoolStrategy.POOL_BY_CRI;
+ }
+ else if (security.getSecurityDomain() != null &&
+ security.getSecurityDomain().trim().length() != 0)
+ {
+ strategy = PoolStrategy.POOL_BY_SUBJECT;
+ securityDomain = security.getSecurityDomain();
+ }
+ else if (security.getSecurityDomainAndApplication() != null &&
+ security.getSecurityDomainAndApplication().trim().length() != 0)
+ {
+ strategy = PoolStrategy.POOL_BY_SUBJECT_AND_CRI;
+ securityDomain = security.getSecurityDomainAndApplication();
+ }
+
+ }
+ Pool pool = pf.create(strategy, mcf, pc, noTxSeparatePool.booleanValue());
+
// Add a connection manager
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
ConnectionManager cm = null;
@@ -1252,7 +1303,8 @@
// Select the correct connection manager
if (tsl == TransactionSupportLevel.NoTransaction)
{
- cm = cmf.createNonTransactional(tsl, pool, allocationRetry,
+ cm = cmf.createNonTransactional(tsl, pool, getSubjectFactory(securityDomain),
+ allocationRetry,
allocationRetryWaitMillis);
}
else
@@ -1289,7 +1341,8 @@
padXid = ijXaPool.isPadXid();
}
- cm = cmf.createTransactional(tsl, pool, allocationRetry,
+ cm = cmf.createTransactional(tsl, pool, getSubjectFactory(securityDomain),
+ allocationRetry,
allocationRetryWaitMillis, getTransactionManager(), interleaving,
xaResourceTimeout, isSameRMOverride, wrapXAResource, padXid);
}
@@ -1519,6 +1572,8 @@
}
}
+ protected abstract SubjectFactory getSubjectFactory(String securityDomain);
+
/**
* Get management views for config property's
* @param cps The config property's
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-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java 2011-02-17 14:22:36 UTC (rev 110696)
@@ -49,6 +49,7 @@
import javax.transaction.TransactionManager;
import org.jboss.logging.Logger;
+import org.jboss.security.SubjectFactory;
import com.github.fungal.api.Kernel;
import com.github.fungal.api.util.Injection;
@@ -323,10 +324,10 @@
excludeAttributes.add(mgtCpName);
}
- String raName = baseName + ",type=ResourceAdapter,class=" +
+ String raName = baseName + ",type=ResourceAdapter,class=" +
getClassName(mgtRa.getResourceAdapter().getClass().getName());
- DynamicMBean raDMB = JMX.createMBean(mgtRa.getResourceAdapter(),
+ DynamicMBean raDMB = JMX.createMBean(mgtRa.getResourceAdapter(),
"Resource adapter",
writeable,
null,
@@ -340,7 +341,7 @@
}
}
- for (org.jboss.jca.core.api.management.ManagedConnectionFactory mgtMcf :
+ for (org.jboss.jca.core.api.management.ManagedConnectionFactory mgtMcf :
mgtConnector.getManagedConnectionFactories())
{
if (mgtMcf.getManagedConnectionFactory() != null)
@@ -361,10 +362,10 @@
excludeAttributes.add(mgtCpName);
}
- String mcfName = baseName + ",type=ManagedConnectionFactory,class=" +
+ String mcfName = baseName + ",type=ManagedConnectionFactory,class=" +
getClassName(mgtMcf.getManagedConnectionFactory().getClass().getName());
- DynamicMBean mcfDMB = JMX.createMBean(mgtMcf.getManagedConnectionFactory(),
+ DynamicMBean mcfDMB = JMX.createMBean(mgtMcf.getManagedConnectionFactory(),
"Managed connection factory",
writeable,
null,
@@ -373,34 +374,34 @@
ObjectName mcfON = new ObjectName(mcfName);
server.registerMBean(mcfDMB, mcfON);
-
+
ons.add(mcfON);
}
if (mgtMcf.getPoolConfiguration() != null)
{
- String mcfPCName = baseName + ",type=ManagedConnectionFactory,class=" +
+ String mcfPCName = baseName + ",type=ManagedConnectionFactory,class=" +
getClassName(mgtMcf.getManagedConnectionFactory().getClass().getName()) +
",subcategory=PoolConfiguration";
DynamicMBean mcfPCDMB = JMX.createMBean(mgtMcf.getPoolConfiguration(), "Pool configuration");
ObjectName mcfPCON = new ObjectName(mcfPCName);
-
+
server.registerMBean(mcfPCDMB, mcfPCON);
-
+
ons.add(mcfPCON);
}
if (mgtMcf.getPool() != null)
{
- String mcfPName = baseName + ",type=ManagedConnectionFactory,class=" +
+ String mcfPName = baseName + ",type=ManagedConnectionFactory,class=" +
getClassName(mgtMcf.getManagedConnectionFactory().getClass().getName()) + ",subcategory=Pool";
-
+
DynamicMBean mcfPDMB = JMX.createMBean(mgtMcf.getPool(), "Pool");
ObjectName mcfPON = new ObjectName(mcfPName);
-
+
server.registerMBean(mcfPDMB, mcfPON);
-
+
ons.add(mcfPON);
}
}
@@ -424,20 +425,20 @@
if (mgtCp.isConfidential())
excludeAttributes.add(mgtCpName);
}
-
- String aoName = baseName + ",type=AdminObject,class=" +
+
+ String aoName = baseName + ",type=AdminObject,class=" +
getClassName(mgtAo.getAdminObject().getClass().getName());
-
- DynamicMBean aoDMB = JMX.createMBean(mgtAo.getAdminObject(),
+
+ DynamicMBean aoDMB = JMX.createMBean(mgtAo.getAdminObject(),
"Admin object",
writeable,
null,
excludeAttributes,
null);
ObjectName aoON = new ObjectName(aoName);
-
+
server.registerMBean(aoDMB, aoON);
-
+
ons.add(aoON);
}
}
@@ -461,4 +462,19 @@
return clz;
}
+
+ @Override
+ protected SubjectFactory getSubjectFactory(String securityDomain)
+ {
+ try
+ {
+ return kernel.getBean(securityDomain, SubjectFactory.class);
+ }
+ catch (Throwable e)
+ {
+ log.error("Kernel loookup of securityDomain " + securityDomain + "got an error", e);
+ return null;
+ }
+
+ }
}
More information about the jboss-cvs-commits
mailing list