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