请banq帮忙看看是怎么回事

lettam 02-10-24

有一个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都要在打包时一道部署,你这个问题以前帖子讨论过。