我想使用 Context.list("") 方法从独立应用程序中列出 Glassfish JNDI 树根内容。
JNDI 树上下文从远程 (127.0.0.1) Glassfish 服务器启动。查找工作正常,因为我使用 asadmin 工具在“资源”上下文中注册了自定义资源。
问题是 list() 返回空集合,我得到"hasMore() returns: false"
输出。
asadmin list-jndi-entries
(没有指定 --context )给出了几行输出,其中包含“资源”上下文,我希望在这个示例程序输出中看到这些行。
package jndisampleapp;
import java.util.Hashtable;
import javax.naming.*;
/**
*
* @author user1
*/
public class JNDISampleApp {
static Context ctx;
public static void main(String[] args) {
Hashtable properties = new Hashtable(2);
properties.put(Context.PROVIDER_URL,"iiop://127.0.0.1:3700");
properties.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.enterprise.naming.SerialInitContextFactory");
// Creating initial context instance.
try {
ctx = new InitialContext(properties);
} catch (NamingException ex) {
System.out.println(ex.getMessage());
}
// Test lookups (works fine).
try {
System.out.println("Res: " + String.valueOf((Double)ctx.lookup("resource/rate")));
} catch (NamingException ex) {
System.out.println(ex.getMessage());
}
try {
System.out.println("Res: " + String.valueOf((Boolean)ctx.lookup("resource/flag")));
} catch (NamingException ex) {
System.out.println(ex.getMessage());
}
// Listing context contents.
try {
NamingEnumeration enumN = ctx.list("");
System.out.println("hasMore() returns: " + enumN.hasMore());
while (enumN.hasMore()) {
NameClassPair p = (NameClassPair) enumN.next();
System.out.println(
"name = " + p.getName() + ", class = " + p.getClassName());
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}