开发者社区> 问答> 正文

Axis2 貌似无法传递自定义的复杂对象啊??报错

我自定义了一个User对象,user对象里面有个字段是List<Role> roles,结果通过userName查询user的时候,报错

Exception in thread "main" org.apache.axis2.AxisFault: org.apache.axis2.AxisFault: Mapping qname not fond for the package: java.util at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationC lient.execute(OperationClient.java:165) at com.zhonghua.proj.service.xsd.impl.UserServiceStub.getUser(UserServiceStub.java:214) at com.zhonghua.proj.service.impl.UserTest.main(UserTest.java:21)
private int userId; private String userName; private String userPassword; private String realName; private List<Role> roles = new ArrayList<Role>(0);
如果查询中有关于roles的就会报错,我是在客户端直接生成代码来调用的

展开
收起
爱吃鱼的程序员 2020-06-22 21:02:52 528 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    可以用数组试试看。

     我试了下,我的方法中返回的是一个UserBean,

    <preclass="brush:java;toolbar:true;auto-links:false;">publicUserBeangetName(UserBeanuserBean){returnuserBean;}

    这个UserBean中有一个List<Roles>;

    <preclass="brush:java;toolbar:true;auto-links:false;">UserBeanuserBean=newUserBean();userBean.setUsername("zsd...");userBean.setPassword("123");List<Roles>rolesList=newArrayList<Roles>();rolesList.add(newRoles(2,"guess"));userBean.setRolesList(rolesList);Object[]opAddEntryArgs1=newObject[]{userBean};//调用getGreeting方法并输出该方法的返回值Object[]response=serviceClient.invokeBlocking(opAddEntry1,opAddEntryArgs1,classes1);UserBeanuserBean1=((UserBean)(response[0]));System.out.println(userBean1.getUsername()+"\t:"+userBean1.getPassword()+"\troles:"+userBean1.getRolesList().get(0).getRoleName());

     

    在取getRoleName的时候会报类型转换异常"

    java.lang.ClassCastException:org.apache.axiom.om.impl.llom.OMElementImplcannotbecasttocom.bean.Roles
     atservice.RPCClient.main(RPCClient.java:70)

    但在只执行userBean1.getRolesList().get(0)输出的结果是:<rolesList><id>2</id><roleName>guess</roleName></rolesList>

    有点不明白为什么,如果把List换成Roles[]数组,则取出数据没问题;

    Axis2不支持List,Axis1支持。。

    如果要传List,要么用较早版本,要么序列化后再传。我之前的解决方案是JSON后再传的

    抛弃Axis2这种古董吧
    那用什么会比较好Axis2貌似是不支持吧,CXF可能稍微好点,axis用起来也比较麻烦。<divclass="ref">

    引用来自“红鼠”的答案

    <divclass=ref_body>

     我试了下,我的方法中返回的是一个UserBean,

    <preclass="brush:java;toolbar:true;auto-links:false;">publicUserBeangetName(UserBeanuserBean){returnuserBean;}

    这个UserBean中有一个List<Roles>;

    <preclass="brush:java;toolbar:true;auto-links:false;">UserBeanuserBean=newUserBean();userBean.setUsername("zsd...");userBean.setPassword("123");List<Roles>rolesList=newArrayList<Roles>();rolesList.add(newRoles(2,"guess"));userBean.setRolesList(rolesList);Object[]opAddEntryArgs1=newObject[]{userBean};//调用getGreeting方法并输出该方法的返回值Object[]response=serviceClient.invokeBlocking(opAddEntry1,opAddEntryArgs1,classes1);UserBeanuserBean1=((UserBean)(response[0]));System.out.println(userBean1.getUsername()+"\t:"+userBean1.getPassword()+"\troles:"+userBean1.getRolesList().get(0).getRoleName());

     

    在取getRoleName的时候会报类型转换异常"

    java.lang.ClassCastException:org.apache.axiom.om.impl.llom.OMElementImplcannotbecasttocom.bean.Roles
     atservice.RPCClient.main(RPCClient.java:70)

    但在只执行userBean1.getRolesList().get(0)输出的结果是:<rolesList><id>2</id><roleName>guess</roleName></rolesList>

    有点不明白为什么,如果把List换成Roles[]数组,则取出数据没问题;

    但axis2不支持list,你只能把得到的这个list转成数组,要不你就得去解析这个值了<rolesList><id>2</id><roleName>guess</roleName></rolesList><divclass="ref">

    引用来自“阿尔法兽”的答案

    <divclass=ref_body>

    Axis2不支持List,Axis1支持。。

    如果要传List,要么用较早版本,要么序列化后再传。我之前的解决方案是JSON后再传的

    <divclass="ref">

    引用来自“shyar”的答案

    <divclass=ref_body><divclass="ref">

    引用来自“阿尔法兽”的答案

    <divclass=ref_body>

    Axis2不支持List,Axis1支持。。

    如果要传List,要么用较早版本,要么序列化后再传。我之前的解决方案是JSON后再传的

    2020-06-22 21:03:10
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载