1
2
3
4
5
6
7
8
9
10
11
12
13
14 package org.eclipse.jetty.plus.jndi;
15
16 import javax.naming.Context;
17 import javax.naming.InitialContext;
18 import javax.naming.LinkRef;
19 import javax.naming.Name;
20 import javax.naming.NameParser;
21 import javax.naming.NamingException;
22
23 import org.eclipse.jetty.jndi.NamingUtil;
24 import org.eclipse.jetty.util.log.Logger;
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public abstract class NamingEntry
40 {
41 private static Logger __log = NamingUtil.__log;
42 public static final String __contextName = "__";
43 protected final Object _scope;
44 protected final String _jndiName;
45 protected String _namingEntryNameString;
46 protected String _objectNameString;
47
48
49 public String toString()
50 {
51 return _jndiName;
52 }
53
54
55 protected NamingEntry (Object scope, String jndiName)
56 throws NamingException
57 {
58 this._scope=scope;
59 this._jndiName = jndiName;
60 }
61
62
63
64
65
66
67
68
69
70
71
72
73 protected NamingEntry (String jndiName)
74 throws NamingException
75 {
76 this (null, jndiName);
77 }
78
79
80
81
82
83
84
85
86
87 public void bindToENC(String localName)
88 throws NamingException
89 {
90
91 InitialContext ic = new InitialContext();
92 Context env = (Context)ic.lookup("java:comp/env");
93 __log.debug("Binding java:comp/env/"+localName+" to "+_objectNameString);
94 NamingUtil.bind(env, localName, new LinkRef(_objectNameString));
95 }
96
97
98
99
100 public void unbindENC ()
101 {
102 try
103 {
104 InitialContext ic = new InitialContext();
105 Context env = (Context)ic.lookup("java:comp/env");
106 __log.debug("Unbinding java:comp/env/"+getJndiName());
107 env.unbind(getJndiName());
108 }
109 catch (NamingException e)
110 {
111 __log.warn(e);
112 }
113 }
114
115
116
117
118 public void release ()
119 {
120 try
121 {
122 InitialContext ic = new InitialContext();
123 ic.unbind(_objectNameString);
124 ic.unbind(_namingEntryNameString);
125 this._namingEntryNameString=null;
126 this._objectNameString=null;
127 }
128 catch (NamingException e)
129 {
130 __log.warn(e);
131 }
132 }
133
134
135
136
137
138
139 public String getJndiName ()
140 {
141 return _jndiName;
142 }
143
144
145
146
147
148
149 public String getJndiNameInScope ()
150 {
151 return _objectNameString;
152 }
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175 protected void save (Object object)
176 throws NamingException
177 {
178 __log.debug("SAVE {} in {}",this,_scope);
179 InitialContext ic = new InitialContext();
180 NameParser parser = ic.getNameParser("");
181 Name prefix = NamingEntryUtil.getNameForScope(_scope);
182
183
184 Name namingEntryName = NamingEntryUtil.makeNamingEntryName(parser, getJndiName());
185 namingEntryName.addAll(0, prefix);
186 _namingEntryNameString = namingEntryName.toString();
187 NamingUtil.bind(ic, _namingEntryNameString, this);
188
189
190 Name objectName = parser.parse(getJndiName());
191 objectName.addAll(0, prefix);
192 _objectNameString = objectName.toString();
193 NamingUtil.bind(ic, _objectNameString, object);
194 }
195
196 }