Ste*_*eve 81
可以列出InitialContext的所有条目.您可以使用此代码段:
InitialContext ctx = new InitialContext();
NamingEnumeration<NameClassPair> list = ctx.list("");
while (list.hasMore()) {
System.out.println(list.next().getName());
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是应用程序服务器,通常可以选择浏览JNDI树.
Nic*_*aly 21
之前的答案没有给我"全图"(在Tomcat7上),所以我把以下的合并,将JNDI值转换为树图(带有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;
}
Run Code Online (Sandbox Code Playgroud)
用法:
toMap(new InitialContext());
Run Code Online (Sandbox Code Playgroud)
在Tomcat7中提供以下输出:
{
"comp": {
"env": {
"myCustomVar": "foobar"
},
"UserTransaction": "Cannot create resource instance",
"Resources": {
"index.html": "org.apache.naming.resources.FileDirContext$FileResource@32edeea8",
"WEB-INF": {
"ibm-web-ext.xml": "org.apache.naming.resources.FileDirContext$FileResource@6132b73b",
"ibm-web-bnd.xml": "org.apache.naming.resources.FileDirContext$FileResource@22cf71b7"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Vie*_*nko 20
我知道,从上一个答案开始有很多时间,但我需要列出上下文中可用的所有jdbc数据源(tomee context).
就我而言,我需要的不仅仅是list("")
(遗憾的是,这对我来说不起作用)才能实现我的目标.我在这里找到了一个命名环境列表:
有了这个,我使用下一个代码片段获得了所有可用的jdbc资源
InitialContext ctx = new InitialContext();
NamingEnumeration<NameClassPair> list = ctx.list("java:comp/env/jdbc");
while (list.hasMore()) {
System.out.println(list.next().getName());
}
Run Code Online (Sandbox Code Playgroud)
就这样.
我希望这可以帮助别人,帮助我.
归档时间: |
|
查看次数: |
48652 次 |
最近记录: |