java调用cxf时返回list类型,出错,请高手给个提示

问题描述

首先看我的代码:UserSerivceImpl.java@WebServicepublic class UserSerivceImpl implements UserService {private UserDao userDao;public void setUserDao(UserDao userDao){this.userDao = userDao;}public List<User> getAllUsers() {// TODO Auto-generated method stubreturn userDao.getAllUserList();}}UserDao.java public List<User> getAllUserList() { List rows = jt.queryForList("select id as userid,username,email as useremail,profile as userage from tbl_user");List<User> list = new ArrayList<User>(); if(rows == null){//rows = new ArrayList<User>();User user = new User();user.setUserage("21");user.setUseremail("jack@123.com");user.setUserid("23");user.setUsername("jack");list.add(user);}else{//rows !=nullfor(int i=0;i<rows.size();i++){User user1 = new User();Hashtable ht = (Hashtable)rows.get(i);user1.setUserage(ht.get("userage")!=null?(String)ht.get("userage"):"2");user1.setUseremail(ht.get("useremail")!=null?(String)ht.get("useremail"):"2");user1.setUserid(ht.get("userid")!=null?(String)ht.get("userid"):"2");user1.setUsername(ht.get("username")!=null?(String)ht.get("username"):"2");list.add(user1);System.out.println("username == "+user1.getUsername());}} return list;}客户端代码:JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();factory.getInInterceptors().add(new LoggingInInterceptor());factory.getOutInterceptors().add(new LoggingOutInterceptor());factory.setAddress("http://localhost:8080/CxfSpring/service/UserManager");factory.setServiceClass(UserService.class);UserService service = (UserService)factory.create();//User user = service.getUserByID("1");//System.out.println("username == "+user.getUsername());List<User> list = service.getAllUsers();System.out.println("list size == "+list);运行客户端 ,然后提示的错误是:Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: org.springframework.util.LinkedCaseInsensitiveMap cannot be cast to java.util.Hashtableat org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)at $Proxy38.getAllUsers(Unknown Source)at test.SoapExample.main(SoapExample.java:53)Caused by: org.apache.cxf.binding.soap.SoapFault: org.springframework.util.LinkedCaseInsensitiveMap cannot be cast to java.util.Hashtableat org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46)at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:247)at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:99)at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:247)at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:733)at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2201)at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2071)at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1925)at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188)at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:662)at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:247)at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)... 2 more请问这是什么错误?怎么解决? 问题补充:谢谢你。就是这个地方有问题。同时user1.setUserid(ht.get("userid")!=null?(Integer)ht.get("userid")+"":"2");这一句也是要修改的。lizhi92574 写道

解决方案

Hashtable ht = (Hashtable)rows.get(i); Map ht = (Map)rows.get(i);
解决方案二:
Hashtable ht = (Hashtable)rows.get(i);确定这样可以转么?
解决方案三:
引用Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: org.springframework.util.LinkedCaseInsensitiveMap cannot be cast to java.util.Hashtable 类型转换错误,引入 Hashtable 错误了,引入一个LinkedCaseInsensitiveMap 对象。

时间: 2024-09-20 00:38:25

java调用cxf时返回list类型,出错,请高手给个提示的相关文章

delphi-Delphi:cxGrid关联的DataSet中如果有Lookup字段时,反应非常慢,请高手指教!

问题描述 Delphi:cxGrid关联的DataSet中如果有Lookup字段时,反应非常慢,请高手指教! cxGrid关联的DataSet中如果有Lookup字段,数据记录大约在5百行左右,打开速度就特别慢. 比如: 在数据库中, 销售出库单中只有客户编号,即FCltCode,没有客户名称: 客户档案表中有客户编号FCode,客户名称FName, 在DataSet1中建立FCltName字段,为Lookup类型,通过FCltCode与FCode关联,显示FCltName. 在这种情况下,软件

asp+access代码出错 请高手指导

问题描述 asp+access代码出错 请高手指导 <%if rs.eof and rs.bof then response.Write("暂时没有信息") else Do Until rs.Eof response.Write("联系人:"& rs("联系人")) If vipuser = 0 Then response.Write("电话:"& rs("电话")) Else If

JAVA调用shell脚本返回执行结果是否成功?

问题描述 需求功能:JAVA调用shell导入大量数据,优化数据库(informix),创建索引,整个执行脚本时间预计 2个小时,我是这样做的.] 各位帮忙看看如下代码是否会有什么漏洞或者不足之处,或者有什么更好的办法,谢谢! Runtime rt = Runtime.getRuntime(); Process p = rt.exec("shell.sh"); if(p.waitFor() != 0){ System.out.println("数据导入成功!"+p.

在表示excel单元格时返回的类型是object,怎么获取单元格的值

问题描述 我在比较excel表里获取的值和datagridview获取的标题是否相等时if(xlsheet3.Cells[1,j]==(dt.Columns[i].HeaderText))发现总是不相等,但实际上两者的值是一样的.xlsheet3.Cells[1,j]返回的类型是object,我把它的值转换成string类型后xlsheet3.Cells[1,j].Value.ToString(),它总是出现Object不包含Value的定义,说什么缺少using引用.xlsheet3.Cell

java调用db2存储过程返回参数中文乱码

问题描述 1.存储过程--DROPPROCEDUREDB2ADMIN.GETNODENAMEPROC;CREATEPROCEDUREGETNODENAMEPROC(INv_clidVARCHAR(20),INv_nodeidVARCHAR(20),OUTv_nodenameVARCHAR(1000))LANGUAGESQLSPECIFICGETNODENAMEPROCMODIFIESSQLDATA--------------------------------------------------

关于java线程同步问题,在线等。请高手指教。

问题描述 如题:JAVA多线程编程.用JAVA写一个多线程程序,写四个线程,对一个变量i同步操作,二个线程对变量i加1,二个线程对变量i减一,输出.我的代码如下:我将对变量i的操作方法add前加了synchronized,但是还是不能实现对变量i的操作同步,请高手指点一下.classResult{Integeri;Result(inta){this.i=newInteger(a);}synchronizedpublicintadd(booleanbool){if(bool){i=newInteg

java调用dll时,出错,这是为什么?

问题描述 通过jni接口,实现本地方法,并用vs编译成dll后,添加到java工程src文件夹外,运行程序时,出现错误:java.lang.UnsatisfiedLinkError:E:...mydll.dll:Can'tfinddependentlibraries.请问这是为什么? 解决方案 解决方案二:编译C++的DLL时去掉/MD选项:修改DLL工程属性:property:Configuration:Active(Release)PlatformActive(x64)C/C++->Code

c#winform调用webservice时返回的数据过多报错InnerException

问题描述 格式化程序尝试对消息反序列化时引发异常:尝试对参数http://tempuri.org进行反序列化时出错:QueryAdmScheduleResponse.InnerException消息是"反序列化对象属于类型drpb.ghnew.QueryAdmScheduleResponseBody时出现错误.读取XML数据时,超出最大字符串内容长度配额(8192).通过更改在创建XML读取器时所使用的XmlDictionaryReaderQuotas对象的MaxStringContentLen

java 编译时出现的问题,请高手指教一下(本人不是一般的菜啊)

问题描述 编译时,出现下面问题是什么原因啊?C:>javaccode.javacode.java:8:类Main是公共的,应在名为Main.java的文件中声明publicclassMainextendsJFrameimplementsActionListener,SerialPortEventListener{^1错误 解决方案 解决方案二:没有人回答么解决方案三:类名与文件名要相同解决方案四:文件名要与publicclassMain中的Main相同解决方案五:文件名改成Main.java解决