📄 jndidumper.java
字号:
/*------------------------------------------------------------------------------Name: JndiDumper.javaProject: xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE file------------------------------------------------------------------------------*/package org.xmlBlaster.test.util;import java.io.PrintStream;import java.util.HashSet;import java.util.Hashtable;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NameClassPair;import javax.naming.NamingEnumeration;import javax.naming.NamingException;import org.apache.naming.NamingService;/** * JndiDumper is used to analize the specified context. * * @author <a href="mailto:michele@laghi.eu">Michele Laghi</a> */public class JndiDumper { /** * Scans the context recursively * @param offset * @param context * @param out * @throws NamingException */ public static void scanContext(String contextName, Context context, PrintStream out) throws NamingException { HashSet subCtx = new HashSet(); if (context == null) context = new InitialContext(); if (contextName == null) contextName = "/"; out.println(contextName); StringBuffer buf = new StringBuffer(contextName.length()); for (int i=0; i < contextName.length(); i++) buf.append(" "); String offset = buf.toString(); NamingEnumeration enumer = context.list(""); while (enumer.hasMore()) { try { NameClassPair pair = (NameClassPair)enumer.next(); Object obj = context.lookup(pair.getName()); if (obj instanceof Context) scanContext(contextName + pair.getName() + "/", (Context)obj, out); else { out.println(offset + pair.getName() + " class='" + pair.getClassName() + "'"); // out.println(tmpOffset + " class='" + pair.getClassName() + "'"); } } catch (javax.naming.CommunicationException e) { out.println("Ignoring problem: " + e.toString()); } } } /** * JNDI determines each property's value by merging the values from the following two sources, in order: * <p/> * The first occurrence of the property from the constructor's environment parameter and (for appropriate properties) the applet parameters and system properties. * The application resource files (jndi.properties). * <p/> * <pre> * com.sun.jndi.ldap.LdapCtxFactory * com.sun.jndi.fscontext.RefFSContextFactory * com.ibm.ejs.ns.jndi.CNInitialContextFactory * com.ibm.websphere.naming.WsnInitialContextFactory * org.jnp.interfaces.NamingContextFactory (JBoss) * * java -Djava.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory org.xmlBlaster.test.util.JndiDumper -startNamingService true -fillNames true * * Dump rmiregistry: * java -Djava.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory -Djava.naming.provider.url=rmi://localhost:1099 org.xmlBlaster.test.util.JndiDumper -fillNames false * JBoss: * java -Djava.naming.factory.initial=org.jnp.interfaces.NamingContextFactory -Djava.naming.provider.url=jnp://localhost:1099 org.xmlBlaster.test.util.JndiDumper -fillNames false * </pre> */ public static void main(String[] args) { try { boolean startNamingService = false; boolean fillNames = true; String factory = null; for (int i=0; i<args.length-1; i++) { if (args[i].equalsIgnoreCase("-startNamingService")) { startNamingService = (new Boolean(args[++i])).booleanValue(); } else if (args[i].equalsIgnoreCase("-java.naming.factory.initial")) { factory = args[++i]; } else if (args[i].equalsIgnoreCase("-fillNames")) { fillNames = (new Boolean(args[++i])).booleanValue(); } } NamingService namingService = null; if (startNamingService) { namingService = new NamingService(); namingService.start(); System.out.println("Started an ebedded naming service."); } Hashtable properties = new Hashtable(); if (factory != null) { properties.put("java.naming.factory.initial", factory); System.out.println("Forcing java.naming.factory.initial=" + factory); } else { System.out.println("Using System.getProperty(java.naming.factory.initial)=" + System.getProperty("java.naming.factory.initial")); } InitialContext context = new InitialContext(properties); if (fillNames) { context.bind("first", new String("first")); context.bind("second", new String("first")); context.bind("third", new String("first")); context.createSubcontext("dir1"); context.createSubcontext("dir2"); context.createSubcontext("dir3"); context.bind("dir1/first", new String("first")); context.bind("dir1/second", new String("first")); context.bind("dir1/third", new String("first")); Context ctx = (Context)context.lookup("dir2"); ctx.bind("first", new String("first")); ctx.bind("second", new String("first")); ctx.bind("third", new String("first")); } System.out.println("================JNDI CONTENT START============="); JndiDumper.scanContext(null, context, System.out); System.out.println("================JNDI CONTENT END ============="); if (namingService != null) namingService.stop(); } catch (Exception ex) { ex.getMessage(); ex.printStackTrace(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -