请banq帮忙看看是怎么回事

02-10-24 lettam

有一个stateless ejb ,有2个方法如下:

public Collection loadMaster(String[] args)

public Collection loadThirdDetail(String strThirdDetailName,String[] args)

在loadMaster()中返回的是一个名叫VOA的value object 集合,

在loadThirdDetail()中返回的是一个名叫VOB的value object 集合,

VOA大概如下:

public class VOA implements Serializable

{

private String spid;

private String spname;

private String spdesc;

....下面是一些setter/getter方法

}

VOB大概如下:

public class VOB implements Serializable

{

private String spid ;

private String appid ;

private String paraname;

private String paradesc;

....下面是一些setter/getter方法

}

在web端用一servlet调用这个ejb,怪事出现了,调用loadmaster方法后

得到一个Collection c1,然后

VOA[] v1 =(VOA[])c1.toArray(new VOA[c1.size()]);没问题,得到了

VOA的数组,

调用loadThirdDetail()方法,得到Collection c2然后

VOB[] v2 =(VOB[])c2.toArray(new VOB[c2.size()]);

这是它throw 一个java.lang.ArrayStore exception,

我换了一个方法如下:

Iterator ite =c2.iterator();

while(ite.hasNext())

{

Object o=ite.next();

System.out.println(o.getClass().getName()) //print "VOB"

//又报错java.lang.ClassCastException

VOB b =(VOB)o;

}

我用的appserver是wsa4.02,我将这段程式换成weblogic,它就没有任何问题,请问banq这到底是怎么回事啊?

banq
2002-10-24 20:26

ejb涉及的class都要在打包时一道部署,你这个问题以前帖子讨论过。