⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jndidumper.java

📁 java开源的企业总线.xmlBlaster
💻 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 + -