You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by am...@apache.org on 2008/12/08 05:28:43 UTC
svn commit: r724248 - in
/webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc:
JDBCTransaction.java PersistentStorageManager.java TransactionLock.java
Author: amilas
Date: Sun Dec 7 20:28:42 2008
New Revision: 724248
URL: http://svn.apache.org/viewvc?rev=724248&view=rev
Log:
commiting the patch for SANDESHA2-184
Added:
webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/TransactionLock.java
Modified:
webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/JDBCTransaction.java
webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/PersistentStorageManager.java
Modified: webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/JDBCTransaction.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/JDBCTransaction.java?rev=724248&r1=724247&r2=724248&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/JDBCTransaction.java (original)
+++ webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/JDBCTransaction.java Sun Dec 7 20:28:42 2008
@@ -70,6 +70,7 @@
} catch (Exception ex) {
}
active = false;
+ pmgr.releaseTransactionLock();
}
public void rollback() {
@@ -80,6 +81,7 @@
} catch (Exception ex) {
}
active = false;
+ pmgr.releaseTransactionLock();
}
public boolean isActive() {
Modified: webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/PersistentStorageManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/PersistentStorageManager.java?rev=724248&r1=724247&r2=724248&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/PersistentStorageManager.java (original)
+++ webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/PersistentStorageManager.java Sun Dec 7 20:28:42 2008
@@ -82,6 +82,8 @@
private static ThreadLocal threadTransaction = null;
private static final Log log = LogFactory.getLog(PersistentStorageManager.class);
+ private TransactionLock transactionLock;
+
public SandeshaThread getInvoker() {
return invoker;
}
@@ -136,6 +138,8 @@
log.debug(param.getName() + "=" + dbPassword);
}
}
+
+ this.transactionLock = new TransactionLock();
}
public void shutdown() {
@@ -176,8 +180,10 @@
}
public Transaction getTransaction() {
+
Transaction transaction = (Transaction) threadTransaction.get();
if (transaction == null) {
+ this.acquireTransactionLock();
transaction = new JDBCTransaction(this);
threadTransaction.set(transaction);
} else {
@@ -334,4 +340,25 @@
}
}
+ public void acquireTransactionLock() {
+ synchronized (this.transactionLock) {
+ if (this.transactionLock.isAcquried()) {
+ try {
+ this.transactionLock.wait();
+ } catch (InterruptedException e) {
+ }
+ // keep on waiting until acquireTransactionLock gain
+ this.acquireTransactionLock();
+ } else {
+ this.transactionLock.lock();
+ }
+ }
+ }
+
+ public void releaseTransactionLock(){
+ synchronized(this.transactionLock){
+ this.transactionLock.release();
+ }
+ }
+
}
Added: webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/TransactionLock.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/TransactionLock.java?rev=724248&view=auto
==============================================================================
--- webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/TransactionLock.java (added)
+++ webservices/sandesha/trunk/java/modules/persistence/src/main/java/org/apache/sandesha2/storage/jdbc/TransactionLock.java Sun Dec 7 20:28:42 2008
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sandesha2.storage.jdbc;
+
+/**
+ * this class is uesd to acquireTransactionLock the transactions util active
+ * transaction is finished.
+ */
+public class TransactionLock {
+
+ //to keep whether an transaction has acquired the storage lock or not
+ private boolean isAcquried;
+
+ public void lock() {
+ this.isAcquried = true;
+ }
+
+ public void release() {
+ this.isAcquried = false;
+ this.notifyAll();
+ }
+
+ public boolean isAcquried() {
+ return this.isAcquried;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org