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