动态invoke的问题?

03-06-27 pcwl
在tomcat服务器下,我在一个servlet里动态调用我的另外一个类的方法。

出错。代码如下

Object obj = ServletHelper.LoadNamedClass(sClsPath,sClsName);

Method method = obj.getClass().getMethod(sMethodName,new Class[]{Document.class});

method.invoke(obj,new Object[]{doc});

如果我把上面的obj换成真正的对象的话调用不会出错(如:aCertReq.reqInputDo(doc);)。

我不用servlet直接在java类里测试动态调用没有这个问题。

我在reqInputDo(doc)里操作过jdbc,代码如下:

Class.forName(device);

m_con = DriverManager.getConnection(url, user, pass);

我怀疑是不是两次动态加载出错(第二次加载数据库驱动)。不是因为找不到数据库驱动的路径。

请帮忙,谢谢!

pcwl
2003-06-27 12:20
解决了,原来是因为这个里面(Object obj = ServletHelper.LoadNamedClass(sClsPath,sClsName);)用的是URLClassLoader(urls);这个好像有改变掉上下文的路径(导致classpath找不到了)。我把它改为了Class.forName();就可以了。

猜你喜欢