Class.forName(name).newInstance()与简单工厂模式结合 的问题?

04-12-07 gaocya
ejb里调用dao工厂时抛出异常,ClassLoders not Found,具体相关代码如下,请问Class.forName使用是否有限制?

建立dao工厂,通过传递的类名daoName 动态生成具体的dao,但在实际运行抛出异常,

package com.sma.factory;

import com.sma.dao.stu.StuDao;

import com.sma.dao.DaoInterface;

public class DaoFactory {

public DaoFactory() {

}

public DaoInterface createDao(String daoName)

{

DaoInterface di=null;

try

{

di=(DaoInterface)Class.forName(daoName).newInstance();

}

catch(Exception e)

{

e.printStackTrace();

}

return di;

}

}

ejb里调用工厂createDao方法生成需要的dao完成具体操作

DaoFactory df=new DaoFactory();

DaoInterface df=df.test();//运行时产生异常ClassLoders not Found

gaocya
2004-12-07 16:59
查看了一些资料据说可能与jboss classloaders有关,希望得到大家的指点

gaocya
2004-12-09 10:04
help

wangjinpeng
2004-12-10 11:43
Class.forName(daoName).newInstance()中daoName必须为实现接口类的详细路径,比如com.sma.dao.daoname,建议用xml文件做一个dao类的向导,每次取得传递值后去xml中取得类路径。

gaocya
2004-12-13 13:52
谢谢楼上,问题关键时运行抛出异常

猜你喜欢
3Go 1 2 3 下一页