1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.plus.jndi;
20
21 import javax.naming.Context;
22 import javax.naming.InitialContext;
23 import javax.naming.LinkRef;
24 import javax.naming.NameNotFoundException;
25 import javax.naming.NamingException;
26 import javax.transaction.UserTransaction;
27
28 import org.eclipse.jetty.jndi.NamingUtil;
29 import org.eclipse.jetty.util.log.Logger;
30
31
32
33
34
35
36 public class Transaction extends NamingEntry
37 {
38 private static Logger __log = NamingUtil.__log;
39 public static final String USER_TRANSACTION = "UserTransaction";
40
41
42 public static void bindToENC ()
43 throws NamingException
44 {
45 Transaction txEntry = (Transaction)NamingEntryUtil.lookupNamingEntry(null, Transaction.USER_TRANSACTION);
46
47 if ( txEntry != null )
48 {
49 txEntry.bindToComp();
50 }
51 else
52 {
53 throw new NameNotFoundException( USER_TRANSACTION + " not found" );
54 }
55 }
56
57 public Transaction (UserTransaction userTransaction)
58 throws NamingException
59 {
60 super (USER_TRANSACTION);
61 save(userTransaction);
62 }
63
64
65
66
67
68
69
70
71 public void bindToENC (String localName)
72 throws NamingException
73 {
74 InitialContext ic = new InitialContext();
75 Context env = (Context)ic.lookup("java:comp/env");
76 __log.debug("Binding java:comp/env"+getJndiName()+" to "+_objectNameString);
77 NamingUtil.bind(env, localName, new LinkRef(_objectNameString));
78 }
79
80
81
82
83
84 private void bindToComp ()
85 throws NamingException
86 {
87
88 InitialContext ic = new InitialContext();
89 Context env = (Context)ic.lookup("java:comp");
90 __log.debug("Binding java:comp/"+getJndiName()+" to "+_objectNameString);
91 NamingUtil.bind(env, getJndiName(), new LinkRef(_objectNameString));
92 }
93
94
95
96
97 public void unbindENC ()
98 {
99 try
100 {
101 InitialContext ic = new InitialContext();
102 Context env = (Context)ic.lookup("java:comp");
103 __log.debug("Unbinding java:comp/"+getJndiName());
104 env.unbind(getJndiName());
105 }
106 catch (NamingException e)
107 {
108 __log.warn(e);
109 }
110 }
111 }