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