首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

javax.naming.OperationNotSupportedException: Can only bind References or Referen

2014-01-26 
请教使用jndi的文件spi进行文件系统操作的问题。 程序是得到指定目录下一个文件的句柄,重命名文件后重绑定该

请教使用jndi的文件spi进行文件系统操作的问题。
程序是得到指定目录下一个文件的句柄,重命名文件后重绑定该文件。

fscontext.jar,providerutil.jar和jndi.jar已经正确设置,java.naming.factory.initial设置为com.sun.jndi.fscontext.RefFSContextFactory,java.naming.provider.url设置为本机的file:/C:/J2EEcode目录。程序里的Context初始化,lookup,rename都已经可以正常操作,可是在rebind函数出现了:
javax.naming.OperationNotSupportedException: Can only bind References or Referenceable objects 错误

源程序主要部分如下:

//java.naming.factory.initial和java.naming.provider.url由
//propertiesFileName指定的文件提供
Properties props = new Properties();
props.setProperty( "java.naming.factory.initial ", "com.sun.jndi.fscontext.RefFSContextFactory " );
props.setProperty( "java.naming.provider.url ", "file:/C:/J2EEcode " );

Context context = new InitialContext( props );
NamingEnumeration namesList = context.list( " " );
if ( namesList == null ){
System.out.println( target + " contains no names " );
}
else{
while( namesList.hasMore() ){
System.out.println( namesList.next() );
}
}

java.lang.Object obj = ontext.lookup( "global.properties " );
context.rename( "global.properties ", "newObj " );

//这儿会出错,javax.naming.OperationNotSupportedException: Can
// only bind References or Referenceable objects context.rebind( "global.properties ", obj );

有点想不通,既然obj文件是从context中取得的。那么肯定是应该实现了Referenceable接口的,那么重新rebind回去为什么会出错呢?

------解决方法--------------------------------------------------------
up
------解决方法--------------------------------------------------------
当JNDI(File类型的)目录树加载的时候

会把当前的文件夹下所有文件加载 ,自动加载的不需要实现Referenceable接口

但是你手动加载的时候 这个绑定的对象就要实现Referenceable接口

        

热点排行