请各位帮忙看一下这个问题:
在jndi访问File System Service Provider(FSSP)时,先是bind一个reference,然后用lookup取出后,转型时报出异常:
java.lang.ClassCastException: javax.naming.Reference
怎么解决这个问题啊?Code:
public static void main(String[] args){
try{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:///D:/workspace/SampleApp");
Context ctx = new InitialContext(env);
ctx.rebind("tmp/myBoundObject",new MyObject());
Object obj =ctx.lookup("tmp/myBoundObject");
System.out.println("Object is : " + obj.toString());
System.out.println("Class Name is : " + obj.getClass().getName());
// Exception from below code
MyObject myobj = (MyObject)obj;
}catch(NamingException ne){
ne.printStackTrace();
System.out.println("Problem is : " + ne);
}
}如下是MyObject Class
public class MyObject implements Referenceable{
String myobj = "MyObject to String";
public Reference getReference(){
return new Reference(MyObject.class.getName());
}
public void printMessage(){
System.out.println("This is instance of MyObject");
}
public String toString(){
return myobj;
}
}
在jndi访问File System Service Provider(FSSP)时,先是bind一个reference,然后用lookup取出后,转型时报出异常:
java.lang.ClassCastException: javax.naming.Reference
怎么解决这个问题啊?Code:
public static void main(String[] args){
try{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:///D:/workspace/SampleApp");
Context ctx = new InitialContext(env);
ctx.rebind("tmp/myBoundObject",new MyObject());
Object obj =ctx.lookup("tmp/myBoundObject");
System.out.println("Object is : " + obj.toString());
System.out.println("Class Name is : " + obj.getClass().getName());
// Exception from below code
MyObject myobj = (MyObject)obj;
}catch(NamingException ne){
ne.printStackTrace();
System.out.println("Problem is : " + ne);
}
}如下是MyObject Class
public class MyObject implements Referenceable{
String myobj = "MyObject to String";
public Reference getReference(){
return new Reference(MyObject.class.getName());
}
public void printMessage(){
System.out.println("This is instance of MyObject");
}
public String toString(){
return myobj;
}
}
解决方案 »
- 随便给一个整数,怎么找出几个素数相乘等于这个整数
- unicode中文字符和英文字符的疑惑
- 怎么模拟发送ListSelectionEvent事件?
- 怎样设计数据库的访问框架????????????????
- 为什么在接口中定义的toString()方法可以不被实现?
- 编码问题
- moverToInsertRow到底把CONCUR定位到什么地方
- 这是一个 记事本功能,我只需要记事本的保存功能,我该如何修改?
- 【老虎吃刺猬,无从下口】
- Char类型转int类型时候,怎么才不是赋值ASCII码??
- Error Message: ids for this class must be manually assigned before calling save():
- (急)请哪位仁兄帮忙解决一道多线程与输入输出的综合问题?
着不到这个类,你的包是否引用够了?
System.out.println("Class Name is : " + obj.getClass().getName());
上面这句print打印出来的结果是obj是javax.naming.Reference对象,但是他应该是MyObject对象才对,因此下面的转型就抛出了
java.lang.ClassCastException: javax.naming.Reference // Exception from below code
MyObject myobj = (MyObject)obj; 我引用的包除了jdk1.5外,还有fscontext.jar, providerutil.jar
但似乎实现Referenceable的对象在帮定后再取出来时没有被Class Load成功,因而返回给我的还是Reference对象。 哪位大虾能够帮忙看看,感激不尽!!