1 /**
2 * Copyright 2010 The Kuali Foundation Licensed under the
3 * Educational Community License, Version 2.0 (the "License"); you may
4 * not use this file except in compliance with the License. You may
5 * obtain a copy of the License at
6 *
7 * http://www.osedu.org/licenses/ECL-2.0
8 *
9 * Unless required by applicable law or agreed to in writing,
10 * software distributed under the License is distributed on an "AS IS"
11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12 * or implied. See the License for the specific language governing
13 * permissions and limitations under the License.
14 */
15
16 package org.kuali.student.common.util.jta;
17
18 import javax.transaction.TransactionManager;
19
20 import org.eclipse.persistence.transaction.JTATransactionController;
21
22 /**
23 *
24 * @author Kuali Student
25 *
26 * Passes the Atomikos TransactionManager to Eclipselink. Set the property
27 * <p>
28 * eclipselink.target-server=org.kuali.student.common.util.jta.AtomikosJtaTransactionController
29 * </p>
30 * The first instance Atomikos UserTransactionManager starts the Atomikos
31 * service and only the first instance of UserTransactionManager will have a
32 * handle to shut it down on close.
33 *
34 */
35 public class AtomikosJtaTransactionController extends JTATransactionController {
36
37 private static TransactionManager tm;
38
39 @Override
40 protected TransactionManager acquireTransactionManager() throws Exception {
41 if(tm==null){
42 Class<?> clazz = Class.forName("com.atomikos.icatch.jta.UserTransactionManager");
43 tm = (TransactionManager) clazz.newInstance();
44 }
45 return tm;
46 }
47
48 public static TransactionManager getTm() {
49 return tm;
50 }
51
52 public static void setTm(TransactionManager tm) {
53 AtomikosJtaTransactionController.tm = tm;
54 }
55
56 }