我自定义了一个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的就会报错,我是在客户端直接生成代码来调用的
可以用数组试试看。
我试了下,我的方法中返回的是一个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这种古董吧我试了下,我的方法中返回的是一个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">Axis2不支持List,Axis1支持。。
如果要传List,要么用较早版本,要么序列化后再传。我之前的解决方案是JSON后再传的
<divclass="ref">Axis2不支持List,Axis1支持。。
如果要传List,要么用较早版本,要么序列化后再传。我之前的解决方案是JSON后再传的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。