为什么Context list(“”)方法返回空集合?

时间:2013-09-16 03:58:40

标签: java glassfish jndi

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

0 个答案:

没有答案