JNDI服务提供者连接工厂之FSContextFactory

本文介绍了一个使用Java NDI实现的文件系统服务提供者。通过该服务提供者可以将文件系统作为命名服务来访问。文章提供了具体的实现代码,并展示了如何列出指定目录下的文件及子目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用该服务提供者需要下载两个Jar包:fscontext.jar、providerutil.jar。

代码如下:

package com.zzj.jndi.provider;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;

public class FSServiceProvider {
	static final String CONTEXT_FACTORY = "com.sun.jndi.fscontext.FSContextFactory";
	final static String PROVIDER_URL = "file:/D:";
	
	public static void main(String[] args) throws Exception {
		Hashtable<String, Object> env = new Hashtable<>();
		env.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FACTORY);
		env.put(Context.PROVIDER_URL, PROVIDER_URL);
		Context ctx = new InitialContext(env);
		NamingEnumeration<NameClassPair> list = ctx.list("/apache-tomcat-7.0.72");
		while (list.hasMoreElements()) {
			NameClassPair nameClassPair = (NameClassPair) list.nextElement();
			System.out.println(nameClassPair);
		}
		System.out.println("-------------------------------------------");
		System.out.println(ctx.lookup("/apache-tomcat-7.0.72/webapps").getClass());
		System.out.println(ctx.lookup("/apache-tomcat-7.0.72/NOTICE").getClass());
	}

}
输出结果:
bin: javax.naming.Context
conf: javax.naming.Context
lib: javax.naming.Context
LICENSE: java.io.File
logs: javax.naming.Context
NOTICE: java.io.File
RELEASE-NOTES: java.io.File
RUNNING.txt: java.io.File
temp: javax.naming.Context
webapps: javax.naming.Context
work: javax.naming.Context
-------------------------------------------
class com.sun.jndi.fscontext.FSContext
class com.sun.jndi.fscontext.FSContext$FSFile
由该服务提供者创建的Context不支持bind(对象绑定)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值