[jboss-cvs] JBossAS SVN: r104379 - in branches/JBPAPP_5_1/connector/src/main/org/jboss/resource: deployers/builder and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Apr 30 14:06:46 EDT 2010
Author: jesper.pedersen
Date: 2010-04-30 14:06:46 -0400 (Fri, 30 Apr 2010)
New Revision: 104379
Modified:
branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/ManagedConnectionFactoryDeployment.java
branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/deployers/builder/ManagedConnectionFactoryBuilder.java
Log:
[JBPAPP-3638] XA Resource Recovery (Part 2)
Modified: branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/ManagedConnectionFactoryDeployment.java
===================================================================
--- branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/ManagedConnectionFactoryDeployment.java 2010-04-30 15:12:08 UTC (rev 104378)
+++ branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/ManagedConnectionFactoryDeployment.java 2010-04-30 18:06:46 UTC (rev 104379)
@@ -57,6 +57,7 @@
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.logging.Logger;
import org.jboss.metadata.MetaData;
+import org.jboss.resource.connectionmanager.xa.XAResourceWrapperImpl;
import org.jboss.resource.metadata.ConfigPropertyMetaData;
import org.jboss.resource.metadata.ConnectionDefinitionMetaData;
import org.jboss.resource.metadata.ConnectorMetaData;
@@ -147,6 +148,7 @@
private String recoverSecurityDomain = null;
private String recoverUserName = null;
private String recoverPassword = null;
+ private String connectionManager = null;
/**
* Default managed constructor for RARDeployment mbeans.
@@ -155,10 +157,13 @@
{
}
- public ManagedConnectionFactoryDeployment(ConnectorMetaData cmd, ManagedConnectionFactoryDeploymentMetaData dmd)
+ public ManagedConnectionFactoryDeployment(ConnectorMetaData cmd,
+ ManagedConnectionFactoryDeploymentMetaData dmd,
+ String connectionManager)
{
this.cmd = cmd;
- this.dmd = dmd;
+ this.dmd = dmd;
+ this.connectionManager = connectionManager;
}
public String getJndiName()
@@ -356,6 +361,11 @@
this.subjectFactory = sf;
}
+ public String getConnectionManager()
+ {
+ return connectionManager;
+ }
+
protected void startService() throws Exception
{
if (mcf != null)
@@ -420,9 +430,8 @@
if (dmd instanceof XADataSourceDeploymentMetaData)
{
XADataSourceDeploymentMetaData xdsdm = (XADataSourceDeploymentMetaData)dmd;
- XAResourceRecoveryRegistry xrrr = getXAResourceRecoveryRegistry();
- if (xrrr != null && !xdsdm.isNoRecover())
+ if (getXAResourceRecoveryRegistry() != null && !xdsdm.isNoRecover())
{
// If we have an XAResourceRecoveryRegistry and the deployment is XA
// lets register it for XA Resource Recovery using the "recover" definitions
@@ -490,7 +499,7 @@
if (log.isDebugEnabled())
log.debug("RecoverSecurityDomain=" + recoverSecurityDomain);
- xrrr.addXAResourceRecovery(this);
+ getXAResourceRecoveryRegistry().addXAResourceRecovery(this);
recoveryRegistered = true;
}
}
@@ -500,11 +509,9 @@
{
if (recoveryRegistered)
{
- XAResourceRecoveryRegistry xrrr = getXAResourceRecoveryRegistry();
-
- if (xrrr != null)
+ if (getXAResourceRecoveryRegistry() != null)
{
- xrrr.removeXAResourceRecovery(this);
+ getXAResourceRecoveryRegistry().removeXAResourceRecovery(this);
recoveryRegistered = false;
if (log.isDebugEnabled())
@@ -544,8 +551,55 @@
XAResource xaResource = mc.getXAResource();
- // TODO: EISName, ...
+ try
+ {
+ ObjectName on = new ObjectName(connectionManager);
+ boolean wrapXAResource = false;
+ boolean padXid = false;
+ Boolean isSameRMOverrideValue = Boolean.FALSE;
+
+ Boolean b = null;
+
+ b = (Boolean)getServer().getAttribute(on, "WrapXAResource");
+ if (b != null)
+ wrapXAResource = b.booleanValue();
+
+ b = (Boolean)getServer().getAttribute(on, "PadXid");
+ if (b != null)
+ padXid = b.booleanValue();
+
+ b = (Boolean)getServer().getAttribute(on, "IsSameRMOverrideValue");
+ if (b != null)
+ isSameRMOverrideValue = b;
+
+ if(wrapXAResource)
+ {
+ String eisProductName = null;
+ String eisProductVersion = null;
+
+ try
+ {
+ eisProductName = mc.getMetaData().getEISProductName();
+ eisProductVersion = mc.getMetaData().getEISProductVersion();
+ }
+ catch (ResourceException re)
+ {
+ // Ignore
+ }
+
+ xaResource = new XAResourceWrapperImpl(xaResource,
+ padXid,
+ isSameRMOverrideValue,
+ eisProductName,
+ eisProductVersion);
+ }
+ }
+ catch (Throwable t)
+ {
+ // Ignore
+ }
+
if (log.isDebugEnabled())
log.debug("Recovery XAResource=" + xaResource + " for " + dmd.getJndiName());
@@ -906,6 +960,7 @@
attributes.add(new MBeanAttributeInfo("McfInstance", "javax.resource.spi.ManagedConnectionFactory", "The ManagedConnectionFactory instance", true, false, false));
attributes.add(new MBeanAttributeInfo("XAResourceRecoveryRegistry", XAResourceRecoveryRegistry.class.getName(), "The XAResource Recovery Registry", true, false, false));
attributes.add(new MBeanAttributeInfo("SubjectFactory", SubjectFactory.class.getName(), "The subject factory used for recovery", true, false, false));
+ attributes.add(new MBeanAttributeInfo("ConnectionManager", String.class.getName(), "The connection manager object name", true, false, false));
// ConnectionDefinitionMetaData cdmd = cmd.getConnectionDefinition(this.connectionDefinition);
@@ -1048,6 +1103,10 @@
{
result = subjectFactory;
}
+ else if("ConnectionManager".equals(attribute))
+ {
+ result = connectionManager;
+ }
if(result == null)
{
Modified: branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/deployers/builder/ManagedConnectionFactoryBuilder.java
===================================================================
--- branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/deployers/builder/ManagedConnectionFactoryBuilder.java 2010-04-30 15:12:08 UTC (rev 104378)
+++ branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/deployers/builder/ManagedConnectionFactoryBuilder.java 2010-04-30 18:06:46 UTC (rev 104379)
@@ -28,7 +28,9 @@
import org.jboss.mx.util.ObjectNameFactory;
import org.jboss.resource.metadata.ConnectorMetaData;
+import org.jboss.resource.metadata.mcf.DataSourceDeploymentMetaData;
import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryTransactionSupportMetaData;
import org.jboss.resource.metadata.repository.DefaultJCAMetaDataRepository;
import org.jboss.system.metadata.ServiceAttributeMetaData;
import org.jboss.system.metadata.ServiceConstructorMetaData;
@@ -100,8 +102,10 @@
ConnectorMetaData md = repository.getConnectorMetaData(mcfmd.getRarName());
if( md == null )
throw new IllegalStateException("No ConnectorMetaData found for mdf rarName: "+mcfmd.getRarName());
- constructor.setParameters(new Object[]{md, mcfmd});
- constructor.setSignature(new String[]{md.getClass().getName(), ManagedConnectionFactoryDeploymentMetaData.class.getName()});
+ constructor.setParameters(new Object[]{md, mcfmd, getConnectionManager(mcfmd)});
+ constructor.setSignature(new String[]{md.getClass().getName(),
+ ManagedConnectionFactoryDeploymentMetaData.class.getName(),
+ String.class.getName()});
return constructor;
}
@@ -126,4 +130,44 @@
return MCF;
}
+ /**
+ * Get the connection manager ObjectName
+ * @param md The metadata
+ * @return The name
+ */
+ private String getConnectionManager(ManagedConnectionFactoryDeploymentMetaData md)
+ {
+ String cmType = "jboss.jca:service=";
+ String jndiName = md.getJndiName();
+
+ if(md.getTransactionSupportMetaData().equals(ManagedConnectionFactoryTransactionSupportMetaData.NONE))
+ {
+ cmType += "NoTxCM,name=" + jndiName;
+ }
+ else if(md.getTransactionSupportMetaData().equals(ManagedConnectionFactoryTransactionSupportMetaData.LOCAL))
+ {
+ if(md instanceof DataSourceDeploymentMetaData)
+ {
+ cmType += "LocalTxCM,name=" + jndiName;
+ }
+ else
+ {
+ cmType += "TxCM,name=" + jndiName;
+ }
+
+ }else
+ {
+ if(md instanceof DataSourceDeploymentMetaData)
+ {
+ cmType += "XATxCM,name=" + jndiName;
+
+ }
+ else
+ {
+ cmType += "TxCM,name=" + jndiName;
+ }
+ }
+
+ return cmType;
+ }
}
More information about the jboss-cvs-commits
mailing list