01: // THIS SOFTWARE IS PROVIDED BY SOFTARIS PTY.LTD. AND OTHER METABOSS
02: // CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
03: // BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
04: // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SOFTARIS PTY.LTD.
05: // OR OTHER METABOSS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
06: // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
07: // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
08: // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
09: // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
10: // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
11: // EVEN IF SOFTARIS PTY.LTD. OR OTHER METABOSS CONTRIBUTORS ARE ADVISED OF THE
12: // POSSIBILITY OF SUCH DAMAGE.
13: //
14: // Copyright 2000-2005 © Softaris Pty.Ltd. All Rights Reserved.
15: package com.metaboss.enterprise.bs.impl;
16:
17: import com.metaboss.enterprise.bs.BSNamingAndDirectoryServiceInvocationException;
18: import com.metaboss.enterprise.bs.BSTransactionServiceInvocationException;
19:
20: /** This is a "tool box" type class which contains transaction related utility methods */
21: public final class BSTransactionUtils {
22: /** This utility method marks transaction associated with the current thread for rollback.
23: * The need to do it explicitly arises when transaction management environment
24: * will not automatically notice the failure condition and will not automatically rollback the transaction */
25: public static void markCurrentTransactionForRollback()
26: throws BSTransactionServiceInvocationException,
27: BSNamingAndDirectoryServiceInvocationException {
28: try {
29: javax.naming.Context lContext = new javax.naming.InitialContext();
30: javax.transaction.UserTransaction lTransaction = (javax.transaction.UserTransaction) lContext
31: .lookup(com.metaboss.enterprise.transaction.UserTransaction.COMPONENT_URL);
32: lTransaction.setRollbackOnly();
33: } catch (javax.naming.NamingException e) {
34: throw new BSNamingAndDirectoryServiceInvocationException(
35: "Unable to force transaction rollback", e);
36: } catch (javax.transaction.SystemException e) {
37: throw new BSTransactionServiceInvocationException(
38: "Unable to force transaction rollback", e);
39: }
40: }
41: }
|