AXIS返回的结果中的对像为什么不能强制转化??

zhaoxuefeng 2005-04-26 01:37:51
初学AXIS,,
在写一个 数据库返回结果每条记录为一个BEAN然后放在LIST 中为什么CLIENT调用以后能得到LIST,但是LIST里的对像确不能强制转化为原来的BEAN,打印输出后是一个OBJECT对像。
...全文
109 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhaoxuefeng 2005-04-29
问题解决了,,换了Vector就可以,但是LIST却不行,,,不知为什么

给分
回复
zhaoxuefeng 2005-04-29
谢谢各位
但是现在用Vector或用LIST都能返回结果,但是我强制转化时报错说类型不匹配
[Ljava.lang.Object;@120cc56

public class WebServiceClientList {
private static final String serverAddress =

"http://localhost/sex/WebServiceList.jws";

private static final String s_serviceName = "WebServiceList";


public Vector getPersonInfo(String name, int age, int tall, boolean sex) {
Service service = new Service();
Call call = null;
Vector person = new Vector();
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(serverAddress));

QName q_person = new QName("urn:BeanService", "Person");
call.registerTypeMapping(PersonImpl.class, q_person,
new org.apache.axis.encoding.ser.BeanSerializerFactory(PersonImpl.class, q_person),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(PersonImpl.class, q_person));

// QName qn = new QName("urn:BeanService", "List","Person");
//
// call.registerTypeMapping(List.class, qn,
// new org.apache.axis.encoding.ser.BeanSerializerFactory(List.class, qn),
// new org.apache.axis.encoding.ser.BeanDeserializerFactory(List.class, qn));


QName qname=new QName("urn:WebServiceList","getPersonInfoList");
call.setOperationName(qname);
call.addParameter("name", qname, ParameterMode.IN);
call.addParameter("age", qname, ParameterMode.IN);
call.addParameter("tall", qname, ParameterMode.IN);
call.addParameter("sex", qname, ParameterMode.IN);
call.setReturnType(qname,Vector.class);

person = (Vector) call.invoke(new Object[] { name,new Integer(age),new Integer(tall),new Boolean(sex) });
} catch (Exception e) {
e.printStackTrace();
}
return person;
}
}




回复
hanbing8124 2005-04-29
用Vector来存放你的Bean对象,就不用定义注册了,楼主可以试试。
回复
zhangbo198294 2005-04-28
帮顶 关注中 也遇到相同的问题
回复
dutguoyi 2005-04-28
up
回复
usabcd 2005-04-28
楼主,还没解决吗,老生常谈的问题。
只有自定义的Bean需要注册,List不需要注册。Axis会自行序列化的。
回复
zhaoxuefeng 2005-04-28
再加分,,顶。。。。
回复
zhaoxuefeng 2005-04-27

ll42002(灰舌) ,,这样定义对吗??

<service name="urn:WebServiceList" provider="java:RPC">

<parameter name="allowedMethods" value="*"/>

<parameter name="className" value="webservice.WebServiceList"/>


</service>
<beanMapping qname="myNS:List" xmlns:myNS="urn:BeanService"
languageSpecificType="java:java.util.List"/>
<beanMapping qname="myNS:Person" xmlns:myNS="urn:BeanService"
languageSpecificType="java:webservice.PersonImpl"/>
回复
ll42002 2005-04-27
我想你在WSDL文件中没有定义Bean复杂类型吧。
回复
zhaoxuefeng 2005-04-27
那样是不是太麻烦了找了一些资说,先在WDLL文件里定义LIST,和BEAN然后在CLIENT端注册 一下就可以了,但是就是出不来结果,,
回复
mozm 2005-04-26
我也想知道怎样做,但在没有想到这些方法前,我是这样做的:
把这些对象转换成XML,然后以字符串的形式发送出去
回复
lilijr 2005-04-26
应该是一个复杂类型的web返回值,强制转换要出错的
回复
zhaoxuefeng 2005-04-26
代码:
Server
public class A{
public List getA(){
List result=new ArrayList();
for(int i=0;i<10;i++){
Bean a=new Bean();
a.set()....
result.add(a);
}
return result;
}
这样在CLIENT端调用的时候可以得到list 但是里面的Bean确成了Object对像,,不能强制转化为Bean对像,请高手看一下,分还可以加,,谢谢


回复
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2005-04-26 01:37
社区公告
暂无公告