在WebService应用中,如果定义接口中的方法返回参数是List 很可能遇到这样的异常:
org.codehaus.xfire.XFireRuntimeException: Cannot create mapping for java.util.List, unspecified component type for interface java.util.List
at org.codehaus.xfire.aegis.type.DefaultTypeCreator.createCollectionType(DefaultTypeCreator.java:43)
at org.codehaus.xfire.aegis.type.java5.Java5TypeCreator.createCollectionType(Java5TypeCreator.java:159)
at org.codehaus.xfire.aegis.type.AbstractTypeCreator.createTypeForClass(AbstractTypeCreator.java:90)
at org.codehaus.xfire.aegis.type.AbstractTypeCreator.createType(AbstractTypeCreator.java:387)
at org.codehaus.xfire.aegis.type.AbstractTypeCreator.createCollectionQName(AbstractTypeCreator.java:310)
at org.codehaus.xfire.aegis.type.AbstractTypeCreator.createCollectionType(AbstractTypeCreator.java:214)
at org.codehaus.xfire.aegis.type.java5.Java5TypeCreator.createCollectionType(Java5TypeCreator.java:155)
at org.codehaus.xfire.aegis.type.XMLTypeCreator.createCollectionType(XMLTypeCreator.java:181)
at org.codehaus.xfire.aegis.type.AbstractTypeCreator.createTypeForClass(AbstractTypeCreator.java:90)
at org.codehaus.xfire.aegis.type.AbstractTypeCreator.createType(AbstractTypeCreator.java:347)
at org.codehaus.xfire.aegis.AegisBindingProvider.getSuggestedName(AegisBindingProvider.java:125)
at org.codehaus.xfire.service.binding.DefaultServiceConfiguration.getOutParameterName (DefaultServiceConfiguration.java:174)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.getOutParameterName(ObjectServiceFactory.java:958)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.addOperation(ObjectServiceFactory.java:719)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.initializeOperations(ObjectServiceFactory.java:645)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.create(ObjectServiceFactory.java:350)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.create(ObjectServiceFactory.java:284)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.create(ObjectServiceFactory.java:265)
at com.webservice.WsClient.getUserByPage(WsClient.java:44)
at gov.bjciq.health.action.RecodeList.service(RecodeList.java:52)
at com.digitalchina.sictech.web.DispatchServlet.service(DispatchServlet.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at gov.bjciq.health.util.LoginFilter.doFilter(LoginFilter.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
如果遇到这样的问题 可以按以下步骤解决:
因为我们用到了List等集合类型,所以需要定义Mapping关系,我们在我们定义接口的包内新建一个文件(请注意,此文件一定要放到与接口相同的目录下面,否则会出错。):接口名.aegis.xml。
XFire默认的Aegis Binding语法非常简单,int,String,Date等类型的参数和返回值都无需定义,只要定义一下List的返回值List里的对象就可以了,是我见过最简单的binding定义,大大优于其他以设计复杂为终极目标的方案。
代码如下
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<method name="接口中方法名">
<return-type componentType="List内对象的完整类名" />
</method>
</mapping>
</mappings>
经过这样的配置 就没有问题了.
分享到:
相关推荐
2、webservice--常用注解1
使用eclipse导入项目,既可使用。 【webservice----xfire 快速入门代码实训】----<下载不扣分,回帖加1分,欢迎下载,童叟无欺>
泛微OA e-cology 8 最新webservice接口文档 包含获取OA流程、新建流程等接口
Xfire在Spring下实现安全的WebService详述---配置 -
webservice apache-cxf-2.3.5
金蝶调用第三方webservice接口以soap方式实现,包括创建服务service、DIspatch、SOAPMessage、QName、封装数据、Dispatch传递消息、消息转换为doc对象、调用结果判断等
WebServiceStudio-master
NULL 博文链接:https://savagegarden.iteye.com/blog/368905
JAX-WS一个简单的java-ws webservice 例子是用myeclipse配置生成的,还行吧。
Java开发WebService实例--计数器.mht
NULL 博文链接:https://sohoku.iteye.com/blog/710152
C++实现56dxw短信验证码WebService接口。 编译工具gsoap-2.8.zip 因为长名字关系,请到根目录解压后再拷贝进来,直接解压可能会解压报错。 用VS.NET2003 开发游戏程序的时候,有一个登录功能模块,需要短信验证码。...
WEBSERVICE调试工具-ESB消息统一推送接口调用说明,内附调试工具,开发webservice接口的同学可以下载
Myeclipse创建WebService实例-很好用.doc 验证成功
展示WebService功能特点(别的地方下载来的,与大家共享)
NULL 博文链接:https://zhangzhaoaaa.iteye.com/blog/1718819
NULL 博文链接:https://newleague.iteye.com/blog/815158
一般的解决方案是使用服务器代理(由同域服务器跨域请求后返回),但导致过于复杂(参见:Java-webservice-CXF-SOAP服务.docx服务器代理)。 如果服务器能够操作,也可以使用JSONP允许跨域请求。
WebService教程-xfire学习手册