在cxf中传送hashmap(soap+webservice)的问题

问题描述

apache的cxf2.3.3原生不支持hashmap的传送,官方在其发布包中给出了一个【java_first_jaxws】工程,该工程运行之后可以正常支持源生hashmap了,可是只要我在hashmap中放入的不是英文,是中文,他就报错:org.apache.cxf.interceptor.Fault:MarshallingError:nullatorg.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshalWithBridge(JAXBEncoderDecoder.java:327)atorg.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:124)atorg.apache.cxf.interceptor.DocLiteralInInterceptor.getPara(DocLiteralInInterceptor.java:251)atorg.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:127)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)atorg.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:755)atorg.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2335)atorg.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2193)atorg.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2037)atorg.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)atorg.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188)atorg.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)atorg.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:697)atorg.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)atorg.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)atorg.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)atorg.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)atorg.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)atorg.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)at$Proxy61.getMapByCXFDocument(UnknownSource)atcom.webservice.cxf.CxfSoapAction.runWebService(CxfSoapAction.java:77)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:592)atorg.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:740)atorg.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:744)atorg.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:593)atorg.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:90)atorg.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120)atorg.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:637)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:717)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)atorg.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)atorg.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)atorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)atjava.lang.Thread.run(Thread.java:595)Causedby:java.lang.reflect.UndeclaredThrowableExceptionat$Proxy74.unmarshal(UnknownSource)atorg.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshalWithBridge(JAXBEncoderDecoder.java:312)...49moreCausedby:java.lang.reflect.InvocationTargetExceptionatsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:592)atorg.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)...51moreCausedby:javax.xml.bind.UnmarshalException-withlinkedexception:[javax.xml.stream.XMLStreamException:Invalidbyte1of1-byteUTF-8sequence.]atcom.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)atcom.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)atcom.sun.xml.bind.v2.runtime.BridgeImpl.unmarshal(BridgeImpl.java:120)atcom.sun.xml.bind.v2.runtime.BridgeAdapter.unmarshal(BridgeAdapter.java:124)atcom.sun.xml.bind.api.Bridge.unmarshal(Bridge.java:233)...56moreCausedby:javax.xml.stream.XMLStreamException:Invalidbyte1of1-byteUTF-8sequence.atcom.sun.xml.stream.XMLReaderImpl.next(XMLReaderImpl.java:560)atorg.apache.cxf.staxutils.DepthXMLStreamReader.next(DepthXMLStreamReader.java:220)atcom.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:192)atcom.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)...59more不知道大家遇到这种情况了么?还是想其他办法绕过去,不直接传送hashmap,传送arraylist???或者有什么好的解决办法否?

解决方案

解决方案二:
不懂这个,用axis生成过
解决方案三:
现在多用cxf了吧?虽然可以用arraylist替代,可是总觉得不应该这样啊。官方提供的例子啊,修改为中文就不行了。
解决方案四:
CXF使用JAXB进行序列化的,可以设置成HashMap的。
解决方案五:
你可以网上搜一下“JAXBhashmap”
解决方案六:
该回复于2011-03-14 13:34:25被版主删除

时间: 2024-10-03 09:36:56

在cxf中传送hashmap(soap+webservice)的问题的相关文章

php中创建和调用webservice接口示例

  这篇文章主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识.webservice服务端例子.webservice客户端例子,需要的朋友可以参考下 作为开发者来讲,要想写webservice接口或者调用别人的webservice接口,首先需要了解什么是webservice.简单说, WebService就是一些站点开放一些服务出来, 也可以是你自己开发的Service, 也就是一些方法, 通过URL,指定某一个方法名,发出请求,站点里的这个服务(方法),

jQuery中通过ajax调用webservice传递数组参数的问题实例详解_jquery

下面通过实例给大家说明比较直观些,更方便大家了解. 本人的项目中通过jquery.ajax调用webservice. 客户端代码如下: $.ajax({ url: "test/xxx.asmx", type: 'POST', dataType: 'xml', timeout: , data: { name: "zhangsan", tags: ["aa", "bb", "cc"] }, error: fun

如何在IIS6.0以上的版本中配置DLL的WebService接口

问题描述 如何在IIS6.0以上的版本中配置DLL的WebService接口 用Delphi编写的WebService接口,以前在IIS5.0版本配置是很简单的: 1-编译生成DLL文件 2-在IIS管理器中添加一个虚拟目录 3-在虚拟目录的属性中的执行权限,选择"脚本和可执行文件" 4-将Dll文件复制到虚拟目录对应的文件夹中,即可访问接口了 现在使用IIS6.0以上版本,就不知如何配置了,请各位高手指教.

我使用cxf和spring整合发布WebService,tomcat上没有报错但是就不访问wsdl

问题描述 我使用cxf和spring整合发布WebService,tomcat上没有报错但是就不访问wsdl No cxf.xml configuration file detected, relying on defaults.在运行tomcat时报这个

Java中的HashMap浅析

在Java的集合框架中,HashSet,HashMap是用的比较多的一种,顺序结构的ArrayList.LinkedList这种也比较多,而像那几个线程同步的容器就用的比较少,像Vector和HashTable,因为这两个线程同步的容器已经不被JDK推荐使用了,这是个比较老式的线程安全的容器,JDK比较推荐的是采用Collections里面的关于线程同步的方法. 问题来源: 1.为什么要有HashMap? <Thinking In Java>里面有一个自己采用二维数组实现的保存key-valu

初探Java8中的HashMap(转)

HashMap是我们最常用的集合之一,同时Java8也提升了HashMap的性能.本着学习的原则,在这探讨一下HashMap. 原理 简单讲解下HashMap的原理:HashMap基于Hash算法,我们通过put(key,value)存储,get(key)来获取.当传入key时,HashMap会根据key.hashCode()计算出hash值,根据hash值将value保存在bucket里.当计算出的hash值相同时怎么办呢,我们称之为Hash冲突,HashMap的做法是用链表和红黑树存储相同h

关于apache cxf 结合Spring框架开发webservice服务

问题描述 我在用apache cxf 结合Spring框架开发webservice服务时,遇到一个这样的问题,请大家帮忙解决一下,问题描述如下: webservice启动配置如下 Java代码 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http

java语言:修改session中的hashMap值,为什么不需要更新session

问题描述 publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{HttpSessionsession=request.getSession(false);RequestDispatcherdispatcher;//如果session不存在,转向/ch04/books.jspif(session==null){dispatcher=reque

CXF配置,ant文件说明及运行,运行cxf中带的项目

安装CXF时需要Tomcat,ant,并设置以下环境变量: JAVA_HOME:        C:\Program Files (x86)\Java\jdk1.6.0_25 CXF_HOME:          D:\Installed\apache-cxf-2.4.2 ANT_HOME:           D:\Installed\apache-ant-1.8.2 CATALINA_HOME:         D:\software\apache-tomcat-7.0.34 Path =%