View Javadoc

1   /**
2    *
3    * Copyright 2004 The Apache Software Foundation
4    *
5    *  Licensed under the Apache License, Version 2.0 (the "License");
6    *  you may not use this file except in compliance with the License.
7    *  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   *  Unless required by applicable law or agreed to in writing, software
12   *  distributed under the License is distributed on an "AS IS" BASIS,
13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   *  See the License for the specific language governing permissions and
15   *  limitations under the License.
16   */
17  
18  package org.apache.geronimo.connector.outbound.connectionmanagerconfig;
19  
20  import javax.transaction.TransactionManager;
21  
22  import org.apache.geronimo.connector.outbound.ConnectionInterceptor;
23  import org.apache.geronimo.connector.outbound.ThreadLocalCachingConnectionInterceptor;
24  import org.apache.geronimo.connector.outbound.TransactionCachingInterceptor;
25  import org.apache.geronimo.connector.outbound.TransactionEnlistingInterceptor;
26  import org.apache.geronimo.connector.outbound.XAResourceInsertionInterceptor;
27  
28  /**
29   *
30   *
31   * @version $Rev: 430508 $ $Date: 2006-08-10 12:56:47 -0700 (Thu, 10 Aug 2006) $
32   *
33   * */
34  public class XATransactions extends TransactionSupport {
35      private boolean useTransactionCaching;
36      private boolean useThreadCaching;
37  
38      public XATransactions(boolean useTransactionCaching, boolean useThreadCaching) {
39          this.useTransactionCaching = useTransactionCaching;
40          this.useThreadCaching = useThreadCaching;
41      }
42  
43      public boolean isUseTransactionCaching() {
44          return useTransactionCaching;
45      }
46  
47      public void setUseTransactionCaching(boolean useTransactionCaching) {
48          this.useTransactionCaching = useTransactionCaching;
49      }
50  
51      public boolean isUseThreadCaching() {
52          return useThreadCaching;
53      }
54  
55      public void setUseThreadCaching(boolean useThreadCaching) {
56          this.useThreadCaching = useThreadCaching;
57      }
58  
59      public ConnectionInterceptor addXAResourceInsertionInterceptor(ConnectionInterceptor stack, String name) {
60          return new XAResourceInsertionInterceptor(stack, name);
61      }
62  
63      public ConnectionInterceptor addTransactionInterceptors(ConnectionInterceptor stack, TransactionManager transactionManager) {
64          //experimental thread local caching
65          if (isUseThreadCaching()) {
66              //useMatching should be configurable
67              stack = new ThreadLocalCachingConnectionInterceptor(stack, false);
68          }
69          stack = new TransactionEnlistingInterceptor(stack, transactionManager);
70          if (isUseTransactionCaching()) {
71              stack = new TransactionCachingInterceptor(stack, transactionManager);
72          }
73          return stack;
74      }
75  }