Puede alguien decir o que me señale código para enumerar todas las entradas jndi en una máquina remotaCódigo para listar todas las entradas en jndi en la máquina remota
Respuesta
Es posible enumerar todas las entradas de un InitialContext. Puede utilizar este fragmento:
InitialContext ctx = new InitialContext();
NamingEnumeration<NameClassPair> list = ctx.list("");
while (list.hasMore()) {
System.out.println(list.next().getName());
}
Si está utilizando un servidor de aplicaciones, por lo general hay la opción de navegar por el árbol JNDI.
Lo sé, hay mucho tiempo de la última respuesta, pero necesitaba enumerar todos los orígenes de datos jdbc disponibles en un contexto (contexto de tomee).
En mi caso, necesitaba más de list("")
(lamentablemente, esto no funcionó) para alcanzar mi objetivo. me encontré con una lista de nombres ambiente aquí:
Naming Environment for J2EE Application Components
Teniendo esto, tengo todos los recursos disponibles utilizando JDBC siguiente fragmento de código
InitialContext ctx = new InitialContext();
NamingEnumeration<NameClassPair> list = ctx.list("java:comp/env/jdbc");
while (list.hasMore()) {
System.out.println(list.next().getName());
}
eso es todo.
Espero que esto pueda ayudar a alguien más, ya que me ayuda.
Las respuestas anteriores no me dieron el "cuadro completo" (en Tomcat7), por lo que he tirado juntos la siguiente amalgama, que convierte los valores JNDI a un mapa de árbol (con valores de toString
):
import javax.naming.*;
...
public static Map toMap(Context ctx) throws NamingException {
String namespace = ctx instanceof InitialContext ? ctx.getNameInNamespace() : "";
HashMap<String, Object> map = new HashMap<String, Object>();
log.info("> Listing namespace: " + namespace);
NamingEnumeration<NameClassPair> list = ctx.list(namespace);
while (list.hasMoreElements()) {
NameClassPair next = list.next();
String name = next.getName();
String jndiPath = namespace + name;
Object lookup;
try {
log.info("> Looking up name: " + jndiPath);
Object tmp = ctx.lookup(jndiPath);
if (tmp instanceof Context) {
lookup = toMap((Context) tmp);
} else {
lookup = tmp.toString();
}
} catch (Throwable t) {
lookup = t.getMessage();
}
map.put(name, lookup);
}
return map;
}
Uso:
toMap(new InitialContext());
dicta la siguiente salida en Tomcat7:
{
"comp": {
"env": {
"myCustomVar": "foobar"
},
"UserTransaction": "Cannot create resource instance",
"Resources": {
"index.html": "[email protected]",
"WEB-INF": {
"ibm-web-ext.xml": "[email protected]",
"ibm-web-bnd.xml": "[email protected]"
}
}
}
}
Estoy utilizando el código siguiente (no para la producción):
public void discoverJndi(String path, Context context) throws TestClientException, NamingException {
try {
NamingEnumeration<NameClassPair> list = context.list(path);
while (list.hasMore()) {
String name = list.next().getName();
String child = path.equals("") ? name : path + "/" + name;
System.out.println(child);
discoverJndi(child, context);
}
} catch (NotContextException e) {}
}
Si bien este fragmento de código puede ser la solución, [incluyendo una explicación] (// meta.stackexchange.com/questions/114762/explaining-entirely-cob-based-answers) realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. – peacetype
- 1. Listar todas las tablas en postgresql information_schema
- 2. ¿Listar todas las funciones integradas en javascript?
- 3. Listar todas las carpetas en el directorio
- 4. AppleScript - Listar todas las fuentes
- 5. Listar todas las compilaciones para siempre en Jenkins?
- 6. Consulta para listar todas las particiones en Datomic
- 7. ¿Cómo inicializar ConnectionFactory para la cola JMS remota cuando la máquina remota no se está ejecutando?
- 8. Groovy Listar todas las propiedades para la clase
- 9. WMI para reiniciar la máquina remota
- 10. Listar todas las imágenes de la cámara en Android
- 11. Reiniciar IIS en la máquina remota
- 12. Listar todas las subclases con nombres completos
- 13. ¿Listar todas las propiedades del objeto ventana?
- 14. Android listar todas las imágenes disponibles
- 15. Listar todas las pruebas encontradas por Nosetest
- 16. CTRL + S para presentar la forma y todas las entradas
- 17. Boost - reciben todas las entradas en la sección
- 18. Obtener todas las direcciones IP en la máquina
- 19. Listar todas las tablas en una base de datos
- 20. Listar todas las computadoras en el directorio activo
- 21. aplicación de la máquina remota abierto
- 22. Eclipse - Ejecutar proyecto en una máquina remota
- 23. cmake "make install" a la máquina remota?
- 24. Desactivar todas las entradas mientras UIActivityIndicatorView spinning
- 25. Expresión regular que rechaza todas las entradas?
- 26. ¿Cómo vincular un evento para todas las entradas de formulario?
- 27. Python: select() no señala todas las entradas de la tubería
- 28. Capturando todas las entradas de trackpad multitouch en Cocoa
- 29. C# Servicio de estado en la máquina remota
- 30. ¿Cuál es la forma más rápida de leer el registro de eventos en la máquina remota?
esto no el árbol completo en Tomcat. Solo lo que el usuario ha creado dentro de esa instancia. ¿Hay alguna manera de hacerlo en tomcat? – John
@John - agregó [la siguiente respuesta] (http://stackoverflow.com/questions/2324937/code-to-list-all-the-entries-in-jndi-on-remote-machine/37021007#37021007) que (con suerte) aborda su problema (mejor tarde que nunca). –