我想使用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());
}
}
}