KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > jguard > ext > java5 > authentication > jmx > MBeanServerGuard


1 /*
2 jGuard is a security framework based on top of jaas (java authentication and authorization security).
3 it is written for web applications, to resolve simply, access control problems.
4 version $Name$
5 http://sourceforge.net/projects/jguard/
6
7 Copyright (C) 2004 Charles GAY
8
9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Lesser General Public
11 License as published by the Free Software Foundation; either
12 version 2.1 of the License, or (at your option) any later version.
13
14 This library is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public
20 License along with this library; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
23
24 jGuard project home page:
25 http://sourceforge.net/projects/jguard/
26
27 */

28 package net.sf.jguard.ext.java5.authentication.jmx;
29
30 import java.io.ObjectInputStream JavaDoc;
31 import java.lang.reflect.Constructor JavaDoc;
32 import java.lang.reflect.InvocationTargetException JavaDoc;
33 import java.security.AccessControlException JavaDoc;
34 import java.util.Arrays JavaDoc;
35 import java.util.HashSet JavaDoc;
36 import java.util.List JavaDoc;
37 import java.util.Set JavaDoc;
38 import java.util.logging.Logger JavaDoc;
39
40 import javax.management.Attribute JavaDoc;
41 import javax.management.AttributeList JavaDoc;
42 import javax.management.AttributeNotFoundException JavaDoc;
43 import javax.management.InstanceAlreadyExistsException JavaDoc;
44 import javax.management.InstanceNotFoundException JavaDoc;
45 import javax.management.IntrospectionException JavaDoc;
46 import javax.management.InvalidAttributeValueException JavaDoc;
47 import javax.management.ListenerNotFoundException JavaDoc;
48 import javax.management.MBeanException JavaDoc;
49 import javax.management.MBeanInfo JavaDoc;
50 import javax.management.MBeanPermission JavaDoc;
51 import javax.management.MBeanRegistration JavaDoc;
52 import javax.management.MBeanRegistrationException JavaDoc;
53 import javax.management.MBeanServer JavaDoc;
54 import javax.management.MBeanTrustPermission JavaDoc;
55 import javax.management.MalformedObjectNameException JavaDoc;
56 import javax.management.NotCompliantMBeanException JavaDoc;
57 import javax.management.NotificationFilter JavaDoc;
58 import javax.management.NotificationListener JavaDoc;
59 import javax.management.ObjectInstance JavaDoc;
60 import javax.management.ObjectName JavaDoc;
61 import javax.management.OperationsException JavaDoc;
62 import javax.management.QueryExp JavaDoc;
63 import javax.management.ReflectionException JavaDoc;
64 import javax.management.loading.ClassLoaderRepository JavaDoc;
65 import javax.management.remote.MBeanServerForwarder JavaDoc;
66
67 import net.sf.jguard.core.authorization.policy.LocalAccessController;
68
69 /**
70  *
71  * @author <a HREF="mailto:diabolo512@users.sourceforge.net">Charles Gay</a>
72  *
73  */

74 public class MBeanServerGuard implements MBeanServerForwarder JavaDoc {
75     private static final Logger JavaDoc logger = Logger.getLogger(MBeanServerGuard.class.getName());
76     private MBeanServer JavaDoc mbs = null;
77     private LocalAccessController accessController = null;
78     
79     public MBeanServerGuard(LocalAccessController lac){
80         accessController = lac;
81     }
82     
83     public MBeanServer JavaDoc getMBeanServer() {
84         return mbs;
85     }
86
87     public void setMBeanServer(MBeanServer JavaDoc mBeanServer) {
88         mbs = mBeanServer;
89     }
90
91     public void addNotificationListener(ObjectName JavaDoc name,
92             NotificationListener JavaDoc listener, NotificationFilter JavaDoc filter,
93             Object JavaDoc handback) throws InstanceNotFoundException JavaDoc {
94         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"addNotificationListener"));
95         mbs.addNotificationListener(name, listener, filter, handback);
96
97     }
98
99     public void addNotificationListener(ObjectName JavaDoc name, ObjectName JavaDoc listener,
100             NotificationFilter JavaDoc filter, Object JavaDoc handback)
101             throws InstanceNotFoundException JavaDoc {
102         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"addNotificationListener"));
103         mbs.addNotificationListener(name, listener, filter, handback);
104     }
105
106     public ObjectInstance JavaDoc createMBean(String JavaDoc className, ObjectName JavaDoc name)
107             throws ReflectionException JavaDoc, InstanceAlreadyExistsException JavaDoc,
108             MBeanRegistrationException JavaDoc, MBeanException JavaDoc,
109             NotCompliantMBeanException JavaDoc {
110         
111         return createMBean(className, name, (Object JavaDoc[]) null, (String JavaDoc[]) null);
112         
113     }
114
115     public ObjectInstance JavaDoc createMBean(String JavaDoc className, ObjectName JavaDoc name,
116             ObjectName JavaDoc loaderName) throws ReflectionException JavaDoc,
117             InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc,
118             MBeanException JavaDoc, NotCompliantMBeanException JavaDoc,
119             InstanceNotFoundException JavaDoc {
120         return createMBean(className, name, loaderName, (Object JavaDoc[]) null, (String JavaDoc[]) null);
121     }
122
123     public ObjectInstance JavaDoc createMBean(String JavaDoc className, ObjectName JavaDoc name,
124             Object JavaDoc[] params, String JavaDoc[] signature) throws ReflectionException JavaDoc,
125             InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc,
126             MBeanException JavaDoc, NotCompliantMBeanException JavaDoc {
127         ObjectInstance JavaDoc oi = null;
128         
129         try {
130             return createMBean(className, name, (ObjectName JavaDoc)null, (Object JavaDoc[]) null, (String JavaDoc[]) null);
131         } catch (InstanceNotFoundException JavaDoc e) {
132             logger.severe(e.getMessage());
133         }
134         return oi;
135         
136     }
137
138     public ObjectInstance JavaDoc createMBean(String JavaDoc className, ObjectName JavaDoc name,
139             ObjectName JavaDoc loaderName, Object JavaDoc[] params, String JavaDoc[] signature)
140             throws ReflectionException JavaDoc, InstanceAlreadyExistsException JavaDoc,
141             MBeanRegistrationException JavaDoc, MBeanException JavaDoc,
142             NotCompliantMBeanException JavaDoc, InstanceNotFoundException JavaDoc {
143         //instantiate permission check
144
accessController.checkPermission(new MBeanPermission JavaDoc(className,null,null,"instantiate"));
145         
146         //register permission check
147
accessController.checkPermission(new MBeanPermission JavaDoc(className,null,name,"registerMBean"));
148         Class JavaDoc clazz = null;
149         try {
150             clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
151         } catch (ClassNotFoundException JavaDoc e) {
152             logger.severe(e.getMessage());
153         }
154          if(!clazz.getProtectionDomain().implies(new MBeanTrustPermission JavaDoc("register"))){
155              throw new AccessControlException JavaDoc("registration denied");
156          }
157         
158         if(name==null){
159             Class JavaDoc[] classes = new Class JavaDoc[signature.length];
160             for (int i =0;i<signature.length;i++) {
161                 String JavaDoc element = signature[i];
162                 try {
163                     classes[i] = Thread.currentThread().getContextClassLoader().loadClass(element);
164                 } catch (ClassNotFoundException JavaDoc e) {
165                     logger.severe(e.getMessage());
166                 }
167             }
168             Constructor JavaDoc constructor;
169             Object JavaDoc obj = null;
170             try {
171                 constructor = clazz.getDeclaredConstructor(classes);
172                 obj = constructor.newInstance(params);
173             } catch (SecurityException JavaDoc e) {
174                 logger.severe(e.getMessage());
175             } catch (NoSuchMethodException JavaDoc e) {
176                 logger.severe(e.getMessage());
177             } catch (IllegalArgumentException JavaDoc e) {
178                 logger.severe(e.getMessage());
179             } catch (InstantiationException JavaDoc e) {
180                 logger.severe(e.getMessage());
181             } catch (IllegalAccessException JavaDoc e) {
182                 logger.severe(e.getMessage());
183             } catch (InvocationTargetException JavaDoc e) {
184                 logger.severe(e.getMessage());
185             }
186             
187             MBeanRegistration JavaDoc mbeanReg = (MBeanRegistration JavaDoc)obj;
188             try {
189                 name = (ObjectName JavaDoc)mbeanReg.preRegister(mbs, null);
190             } catch (Exception JavaDoc e) {
191                 logger.severe(e.getMessage());
192             }
193             accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"registerMBean"));
194         }
195         
196          
197         ObjectInstance JavaDoc oi = mbs.createMBean(className, name);
198         return oi;
199     }
200
201     public ObjectInputStream JavaDoc deserialize(ObjectName JavaDoc name, byte[] data)
202             throws InstanceNotFoundException JavaDoc, OperationsException JavaDoc {
203         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"getClassLoaderFor"));
204         return mbs.deserialize(name, data);
205     }
206
207     public ObjectInputStream JavaDoc deserialize(String JavaDoc className, byte[] data)
208             throws OperationsException JavaDoc, ReflectionException JavaDoc {
209         accessController.checkPermission(new MBeanPermission JavaDoc(null,null,null,"getClassLoaderRepository"));
210         return mbs.deserialize(className, data);
211     }
212
213     public ObjectInputStream JavaDoc deserialize(String JavaDoc className,
214             ObjectName JavaDoc loaderName, byte[] data)
215             throws InstanceNotFoundException JavaDoc, OperationsException JavaDoc,
216             ReflectionException JavaDoc {
217         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(loaderName),null,loaderName,"getClassLoader"));
218         return mbs.deserialize(className, loaderName, data);
219     }
220
221     public Object JavaDoc getAttribute(ObjectName JavaDoc name, String JavaDoc attribute)
222             throws MBeanException JavaDoc, AttributeNotFoundException JavaDoc,
223             InstanceNotFoundException JavaDoc, ReflectionException JavaDoc {
224         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),attribute,name,"getAttribute"));
225         return mbs.getAttribute(name, attribute);
226     }
227
228     public AttributeList JavaDoc getAttributes(ObjectName JavaDoc name, String JavaDoc[] attributes)
229             throws InstanceNotFoundException JavaDoc, ReflectionException JavaDoc {
230         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"getAttribute"));
231         AttributeList JavaDoc attList = mbs.getAttributes(name, attributes);
232         for(int i = 0;i<attList.size();i++){
233             Attribute JavaDoc att = (Attribute JavaDoc)attList.get(i);
234             try{
235                 accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name), att.getName(), name, "getAttribute"));
236             }catch(AccessControlException JavaDoc ace){
237                 attList.remove(att);
238                 i--;
239             }
240         }
241         return attList;
242     }
243
244     public ClassLoader JavaDoc getClassLoader(ObjectName JavaDoc loaderName)
245             throws InstanceNotFoundException JavaDoc {
246             accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(loaderName),null,loaderName,"getClassLoader"));
247         return mbs.getClassLoader(loaderName);
248     }
249
250     public ClassLoader JavaDoc getClassLoaderFor(ObjectName JavaDoc mbeanName)
251             throws InstanceNotFoundException JavaDoc {
252             accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(mbeanName),null,mbeanName,"getClassLoaderFor"));
253         return mbs.getClassLoaderFor(mbeanName);
254     }
255
256     public ClassLoaderRepository JavaDoc getClassLoaderRepository() {
257             accessController.checkPermission(new MBeanPermission JavaDoc(null,null,null,"getClassLoaderRepository"));
258         return mbs.getClassLoaderRepository();
259     }
260
261     public String JavaDoc getDefaultDomain() {
262         return mbs.getDefaultDomain();
263     }
264
265     public String JavaDoc[] getDomains() {
266         MBeanPermission JavaDoc perm = null;
267         try {
268             perm = new MBeanPermission JavaDoc(null,null,new ObjectName JavaDoc("*"),"getDomains");
269         } catch (MalformedObjectNameException JavaDoc e) {
270             logger.severe(e.getMessage());
271         } catch (NullPointerException JavaDoc e) {
272             logger.severe(e.getMessage());
273         }
274         accessController.checkPermission(perm);
275         List JavaDoc<String JavaDoc> domainsList = Arrays.asList(mbs.getDomains());
276         for(int i = 0;i<domainsList.size();i++){
277             String JavaDoc domain = domainsList.get(i);
278             try{
279                 accessController.checkPermission(new MBeanPermission JavaDoc(null,null, new ObjectName JavaDoc(domain+":x=x"), "getDomains"));
280             }catch(AccessControlException JavaDoc ace){
281                 domainsList.remove(domain);
282                 i--;
283             } catch (MalformedObjectNameException JavaDoc e) {
284                 logger.severe(e.getMessage());
285             } catch (NullPointerException JavaDoc e) {
286                 logger.severe(e.getMessage());
287             }
288         }
289         return domainsList.toArray(new String JavaDoc[domainsList.size()]);
290     }
291
292     public Integer JavaDoc getMBeanCount() {
293         return mbs.getMBeanCount();
294     }
295
296     public MBeanInfo JavaDoc getMBeanInfo(ObjectName JavaDoc name)
297             throws InstanceNotFoundException JavaDoc, IntrospectionException JavaDoc,
298             ReflectionException JavaDoc {
299         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"getMBeanInfo"));
300         return mbs.getMBeanInfo(name);
301     }
302
303     public ObjectInstance JavaDoc getObjectInstance(ObjectName JavaDoc name)
304             throws InstanceNotFoundException JavaDoc {
305         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"getObjectInstance"));
306         return mbs.getObjectInstance(name);
307     }
308
309     public Object JavaDoc instantiate(String JavaDoc className) throws ReflectionException JavaDoc,
310             MBeanException JavaDoc {
311         accessController.checkPermission(new MBeanPermission JavaDoc(className,null,null,"instantiate"));
312         return mbs.instantiate(className);
313     }
314
315     public Object JavaDoc instantiate(String JavaDoc className, ObjectName JavaDoc loaderName)
316             throws ReflectionException JavaDoc, MBeanException JavaDoc,
317             InstanceNotFoundException JavaDoc {
318         accessController.checkPermission(new MBeanPermission JavaDoc(className,null,null,"instantiate"));
319         return mbs.instantiate(className,loaderName);
320     }
321
322     public Object JavaDoc instantiate(String JavaDoc className, Object JavaDoc[] params,
323             String JavaDoc[] signature) throws ReflectionException JavaDoc, MBeanException JavaDoc {
324         accessController.checkPermission(new MBeanPermission JavaDoc(className,null,null,"instantiate"));
325         return mbs.instantiate(className, params, signature);
326     }
327
328     public Object JavaDoc instantiate(String JavaDoc className, ObjectName JavaDoc loaderName,
329             Object JavaDoc[] params, String JavaDoc[] signature) throws ReflectionException JavaDoc,
330             MBeanException JavaDoc, InstanceNotFoundException JavaDoc {
331         accessController.checkPermission(new MBeanPermission JavaDoc(className,null,null,"instantiate"));
332         return mbs.instantiate(className, loaderName, params, signature);
333     }
334
335     public Object JavaDoc invoke(ObjectName JavaDoc name, String JavaDoc operationName,
336             Object JavaDoc[] params, String JavaDoc[] signature)
337             throws InstanceNotFoundException JavaDoc, MBeanException JavaDoc,
338             ReflectionException JavaDoc {
339         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),operationName,name,"invoke"));
340         return mbs.invoke(name, operationName, params, signature);
341     }
342
343     public boolean isInstanceOf(ObjectName JavaDoc name, String JavaDoc className)
344             throws InstanceNotFoundException JavaDoc {
345         accessController.checkPermission(new MBeanPermission JavaDoc(className,null,name,"isInstanceOf"));
346         return mbs.isInstanceOf(name, className);
347     }
348
349     public boolean isRegistered(ObjectName JavaDoc name) {
350         return mbs.isRegistered(name);
351     }
352
353     public Set JavaDoc queryMBeans(ObjectName JavaDoc name, QueryExp JavaDoc query) {
354         accessController.checkPermission(new MBeanPermission JavaDoc(null,null,name,"queryMBeans"));
355         Set JavaDoc<ObjectInstance JavaDoc> mbeans = mbs.queryMBeans(name, query);
356         
357         Set JavaDoc<ObjectInstance JavaDoc> mbeansToRemove = new HashSet JavaDoc<ObjectInstance JavaDoc>();
358         for(ObjectInstance JavaDoc oi:mbeans){
359             try{
360                 accessController.checkPermission(new MBeanPermission JavaDoc(oi.getClassName(),null,oi.getObjectName(),"queryMBeans"));
361             }catch(AccessControlException JavaDoc ace){
362                 mbeansToRemove.add(oi);
363             }
364         }
365         boolean success = mbeans.removeAll(mbeansToRemove);
366         if(!success){
367             throw new AccessControlException JavaDoc("mbeans cannot be removed from the returned Set when access is denied to them with the queryMbeans operation ");
368         }
369         return mbeans;
370     }
371
372     public Set JavaDoc queryNames(ObjectName JavaDoc name, QueryExp JavaDoc query) {
373         accessController.checkPermission(new MBeanPermission JavaDoc(null,null,name,"queryNames"));
374         Set JavaDoc<ObjectName JavaDoc> mbeans = mbs.queryNames(name, query);
375         Set JavaDoc<ObjectName JavaDoc> mbeansToRemove = new HashSet JavaDoc<ObjectName JavaDoc>();
376         for(ObjectName JavaDoc on:mbeans){
377             try{
378                 accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(on),null,on,"queryNames"));
379             }catch(AccessControlException JavaDoc ace){
380                 mbeansToRemove.add(on);
381             }
382         }
383         boolean success = mbeans.removeAll(mbeansToRemove);
384         
385         return mbeans;
386     }
387
388     public ObjectInstance JavaDoc registerMBean(Object JavaDoc object, ObjectName JavaDoc name)
389             throws InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc,
390             NotCompliantMBeanException JavaDoc {
391         String JavaDoc className = null;
392         try {
393             className = mbs.getMBeanInfo(name).getClassName();
394         } catch (InstanceNotFoundException JavaDoc e) {
395             logger.severe(e.getMessage());
396         } catch (IntrospectionException JavaDoc e) {
397             logger.severe(e.getMessage());
398         } catch (ReflectionException JavaDoc e) {
399             logger.severe(e.getMessage());
400         }
401         //instantiate permission check
402
accessController.checkPermission(new MBeanPermission JavaDoc(className,null,null,"instantiate"));
403         
404         //register permission check
405
if(name!=null){
406             accessController.checkPermission(new MBeanPermission JavaDoc(className,null,name,"registerMBean"));
407         }else{
408             MBeanRegistration JavaDoc mbeanReg = (MBeanRegistration JavaDoc)object;
409             try {
410                 name = (ObjectName JavaDoc)mbeanReg.preRegister(mbs, null);
411             } catch (Exception JavaDoc e) {
412                 logger.severe(e.getMessage());
413             }
414             accessController.checkPermission(new MBeanPermission JavaDoc(className,null,name,"registerMBean"));
415         }
416         Class JavaDoc clazz = null;
417         try {
418             clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
419         } catch (ClassNotFoundException JavaDoc e) {
420             logger.severe(e.getMessage());
421         }
422          if(!clazz.getProtectionDomain().implies(new MBeanTrustPermission JavaDoc("register"))){
423              throw new AccessControlException JavaDoc("registration denied");
424          }
425         return mbs.registerMBean(object, name);
426     }
427
428     public void removeNotificationListener(ObjectName JavaDoc name, ObjectName JavaDoc listener)
429             throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc {
430         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"removeNotificationListener"));
431         mbs.removeNotificationListener(name, listener);
432
433     }
434
435     public void removeNotificationListener(ObjectName JavaDoc name,
436             NotificationListener JavaDoc listener) throws InstanceNotFoundException JavaDoc,
437             ListenerNotFoundException JavaDoc {
438         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"removeNotificationListener"));
439         mbs.removeNotificationListener(name, listener);
440
441     }
442
443     public void removeNotificationListener(ObjectName JavaDoc name,
444             ObjectName JavaDoc listener, NotificationFilter JavaDoc filter, Object JavaDoc handback)
445             throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc {
446         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"removeNotificationListener"));
447         mbs.removeNotificationListener(name, listener,filter,handback);
448
449     }
450
451     public void removeNotificationListener(ObjectName JavaDoc name,
452             NotificationListener JavaDoc listener, NotificationFilter JavaDoc filter,
453             Object JavaDoc handback) throws InstanceNotFoundException JavaDoc,
454             ListenerNotFoundException JavaDoc {
455         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"removeNotificationListener"));
456         mbs.removeNotificationListener(name, listener,filter,handback);
457
458     }
459
460     public void setAttribute(ObjectName JavaDoc name, Attribute JavaDoc attribute)
461             throws InstanceNotFoundException JavaDoc, AttributeNotFoundException JavaDoc,
462             InvalidAttributeValueException JavaDoc, MBeanException JavaDoc, ReflectionException JavaDoc {
463         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),attribute.getName(),name,"setAttribute"));
464
465     }
466
467     public AttributeList JavaDoc setAttributes(ObjectName JavaDoc name, AttributeList JavaDoc attributes)
468             throws InstanceNotFoundException JavaDoc, ReflectionException JavaDoc {
469         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"setAttribute"));
470         AttributeList JavaDoc attList = mbs.setAttributes(name, attributes);
471         for(int i = 0;i<attList.size();i++){
472             Attribute JavaDoc att = (Attribute JavaDoc)attList.get(i);
473             try{
474                 accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name), att.getName(), name, "setAttribute"));
475             }catch(AccessControlException JavaDoc ace){
476                 attList.remove(att);
477                 i--;
478             }
479         }
480         return null;
481     }
482
483     public void unregisterMBean(ObjectName JavaDoc name)
484             throws InstanceNotFoundException JavaDoc, MBeanRegistrationException JavaDoc {
485         accessController.checkPermission(new MBeanPermission JavaDoc(getClassName(name),null,name,"unregisterMBean"));
486         mbs.unregisterMBean(name);
487
488     }
489
490     private String JavaDoc getClassName(ObjectName JavaDoc name){
491         String JavaDoc className = null;
492         try {
493             className = mbs.getMBeanInfo(name).getClassName();
494         } catch (InstanceNotFoundException JavaDoc e) {
495             logger.severe(e.getMessage());
496         } catch (IntrospectionException JavaDoc e) {
497             logger.severe(e.getMessage());
498         } catch (ReflectionException JavaDoc e) {
499             logger.severe(e.getMessage());
500         }
501         return className;
502     }
503 }
504
Popular Tags