View Javadoc
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  }