[jboss-svn-commits] JBL Code SVN: r34866 - in labs/jbosstm/trunk: ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 24 08:51:23 EDT 2010
Author: jhalliday
Date: 2010-08-24 08:51:23 -0400 (Tue, 24 Aug 2010)
New Revision: 34866
Modified:
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBeanMBean.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/BaseStore.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStore.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/StoreManager.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/TransactionStatusManagerItem.java
labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java
Log:
Changes to support future addition of HornetQ journal ObjectStore. JBTM-782
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java 2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java 2010-08-24 12:51:23 UTC (rev 34866)
@@ -35,7 +35,7 @@
@PropertyPrefix(prefix = "com.arjuna.ats.arjuna.coordinator.")
public class CoordinatorEnvironmentBean implements CoordinatorEnvironmentBeanMBean
{
- private volatile String actionStore = HashedActionStore.class.getName();
+ private volatile String actionStore = HashedActionStore.class.getName();
private volatile boolean asyncCommit = false;
private volatile boolean asyncPrepare = false;
private volatile boolean asyncRollback = false;
@@ -73,6 +73,8 @@
private volatile boolean alternativeRecordOrdering = false;
+ private volatile String communicationStore = HashedActionStore.class.getName();
+
/**
* Returns the symbolic name for the action store type.
*
@@ -670,4 +672,26 @@
{
this.alternativeRecordOrdering = alternativeRecordOrdering;
}
+
+ /**
+ * Returns the symbolic name for the communication store type.
+ *
+ * Default: "HashedActionStore"
+ *
+ * @return the communication store name.
+ */
+ public String getCommunicationStore()
+ {
+ return communicationStore;
+ }
+
+ /**
+ * Sets the symbolic name of the communication store.
+ *
+ * @param communicationStore the communication store name.
+ */
+ public void setCommunicationStore(String communicationStore)
+ {
+ this.communicationStore = communicationStore;
+ }
}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBeanMBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBeanMBean.java 2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBeanMBean.java 2010-08-24 12:51:23 UTC (rev 34866)
@@ -72,4 +72,6 @@
boolean isBeforeCompletionWhenRollbackOnly();
String getCheckedActionFactoryClassName();
+
+ String getCommunicationStore();
}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/BaseStore.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/BaseStore.java 2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/BaseStore.java 2010-08-24 12:51:23 UTC (rev 34866)
@@ -56,5 +56,9 @@
*/
public String getStoreName ();
+
+ public void start();
+
+ public void stop();
}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStore.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStore.java 2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStore.java 2010-08-24 12:51:23 UTC (rev 34866)
@@ -59,6 +59,12 @@
public abstract class ObjectStore implements ObjectStoreAPI
{
+ @Override
+ public void start() {}
+
+ @Override
+ public void stop() {}
+
public boolean allObjUids (String s, InputObjectState buff) throws ObjectStoreException
{
return allObjUids(s, buff, StateStatus.OS_UNKNOWN);
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/StoreManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/StoreManager.java 2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/StoreManager.java 2010-08-24 12:51:23 UTC (rev 34866)
@@ -34,17 +34,31 @@
{
private static ObjectStoreAPI actionStore = null; // for BasicAction i.e. tx logging / recovery
private static ObjectStoreAPI stateStore = null; // for StateManager i.e. txoj object type store.
+ private static ObjectStoreAPI communicationStore = null; // for IPC e.g. JacOrbRCServiceInit, TransactionStatusManagerItem
- public StoreManager(ObjectStoreAPI actionStore, ObjectStoreAPI stateStore) {
+ public StoreManager(ObjectStoreAPI actionStore, ObjectStoreAPI stateStore, ObjectStoreAPI communicationStore) {
- if(StoreManager.actionStore != null || StoreManager.stateStore != null) {
+ if(StoreManager.actionStore != null || StoreManager.stateStore != null || StoreManager.communicationStore != null) {
throw new IllegalStateException("store already initialized!");
}
StoreManager.actionStore = actionStore;
StoreManager.stateStore = stateStore;
+ StoreManager.communicationStore = communicationStore;
}
+ public static final void shutdown() {
+ if(actionStore != null) {
+ actionStore.stop();
+ }
+ if(stateStore != null) {
+ stateStore.stop();
+ }
+ if(communicationStore != null) {
+ communicationStore.stop();
+ }
+ }
+
public static final RecoveryStore getRecoveryStore ()
{
return getActionStore();
@@ -58,6 +72,41 @@
return getActionStore();
}
+ public static final ParticipantStore getCommunicationStore() {
+ return getCommunicationStoreInternal();
+ }
+
+ private static final ObjectStoreAPI getCommunicationStoreInternal()
+ {
+ if(communicationStore != null) {
+ return communicationStore;
+ }
+
+ synchronized(StoreManager.class) {
+
+ if(communicationStore != null) {
+ return communicationStore;
+ }
+
+ String communicationStoreType = arjPropertyManager.getCoordinatorEnvironmentBean().getCommunicationStore();
+
+ try
+ {
+ Class osc = Class.forName(communicationStoreType);
+
+ communicationStore = (ObjectStoreAPI) osc.newInstance();
+ }
+ catch (final Throwable ex)
+ {
+ throw new FatalError(tsLogger.i18NLogger.get_StoreManager_invalidtype() + " " + communicationStoreType, ex);
+ }
+
+ communicationStore.start();
+ }
+
+ return communicationStore;
+ }
+
/**
* @return the <code>ObjectStore</code> implementation which the
* transaction coordinator will use.
@@ -105,6 +154,8 @@
{
throw new FatalError(tsLogger.i18NLogger.get_StoreManager_invalidtype() + " " + actionStoreType, ex);
}
+
+ actionStore.start();
}
return actionStore;
@@ -147,6 +198,7 @@
throw new FatalError(tsLogger.i18NLogger.get_StoreManager_invalidtype() + " " + storeType, ex);
}
+ stateStore.start();
}
return stateStore;
}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/TransactionStatusManagerItem.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/TransactionStatusManagerItem.java 2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/TransactionStatusManagerItem.java 2010-08-24 12:51:23 UTC (rev 34866)
@@ -37,7 +37,7 @@
import com.arjuna.ats.arjuna.common.Uid ;
import com.arjuna.ats.arjuna.exceptions.ObjectStoreException ;
-import com.arjuna.ats.arjuna.objectstore.RecoveryStore;
+import com.arjuna.ats.arjuna.objectstore.ParticipantStore;
import com.arjuna.ats.arjuna.objectstore.StoreManager;
import com.arjuna.ats.arjuna.state.InputObjectState ;
import com.arjuna.ats.arjuna.state.OutputObjectState ;
@@ -81,9 +81,9 @@
/**
* Get a reference to the Object Store.
*/
- private static RecoveryStore getStore()
+ private static ParticipantStore getStore()
{
- return StoreManager.getRecoveryStore();
+ return StoreManager.getCommunicationStore();
}
/**
Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java 2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java 2010-08-24 12:51:23 UTC (rev 34866)
@@ -35,6 +35,7 @@
import com.arjuna.ats.arjuna.common.*;
import com.arjuna.ats.arjuna.objectstore.ParticipantStore;
import com.arjuna.ats.arjuna.objectstore.StoreManager;
+import com.arjuna.ats.arjuna.objectstore.TxLog;
import com.arjuna.ats.internal.jts.recovery.recoverycoordinators.*;
import com.arjuna.ats.jts.logging.*;
@@ -248,14 +249,11 @@
try
{
- if (participantStore == null)
- {
- participantStore = StoreManager.getParticipantStore();
- }
-
OutputObjectState oState = new OutputObjectState();
oState.packString(reference);
- participantStore.write_committed( new Uid(uid4Recovery), type(), oState);
+
+ TxLog txLog = StoreManager.getCommunicationStore();
+ txLog.write_committed( new Uid(uid4Recovery), type(), oState);
}
catch ( java.lang.SecurityException sex )
{
@@ -305,8 +303,6 @@
private static final String orbNamePrefix = "ots_";
private static final String orbName = "arjuna.portable_interceptor.";
- private ParticipantStore participantStore;
-
static protected String uid4Recovery = "0:ffff52e38d0c:c91:4140398c:0";
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list