项目场景:

普元EOS7.5开发工具(本文简称为EOS)提供便捷的一键生成WebService接口服务。

虽然也支持生成HTTP的接口,但是这个旧工具还是生成WebService方便且不会有什么接收参数的问题,生成RestFul方式的接口请看另一篇文章

普元EOS7.5生成RestFul接口服务

我们平时生成的WebService入参多数时候使用DataObject的格式或者直接的基本类型入参,但是当我们需要用对象数组时,使用DataObject就无法实现我们的需求了


问题描述:

当我第一时间接到用对象数组作为入参时,我第一时间就想到使用DataObject实体对象数组,结果在我耗费了好几个小时的情况下还是失败了,这才想起以前自己和同时也曾在这里踩过坑,竟然忘记了。 具体的使用数据实体过程就不详细描述了,大家可以看官方文档来操作。

首先在使用DataObject[]作为入参时,虽然生成WebService会成功,但是客户端调用时会出现下面的问题

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring>java.lang.IllegalStateException: Current state not START_ELEMENT, END_ELEMENT or ENTITY_REFERENCE</faultstring><detail><Exception>org.apache.axis2.AxisFault: java.lang.IllegalStateException: Current state not START_ELEMENT, END_ELEMENT or ENTITY_REFERENCEat org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)at org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver.invokeBusinessLogic(Axis2ServiceInOutSyncMessageReceiver.java:204)at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42)at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)at com.primeton.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:102)at com.primeton.sca.host.webapp.SCAWebServiceServletFilter.doIntercept(SCAWebServiceServletFilter.java:117)at com.primeton.access.http.impl.WebInterceptorChainImpl.doIntercept(WebInterceptorChainImpl.java:56)at com.eos.access.http.InterceptorFilter.doFilter(InterceptorFilter.java:120)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:662)
Caused by: org.osoa.sca.ServiceRuntimeException: java.lang.IllegalStateException: Current state not START_ELEMENT, END_ELEMENT or ENTITY_REFERENCEat org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:119)at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:85)at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:79)at org.apache.tuscany.sca.core.assembly.RuntimeWireImpl.invoke(RuntimeWireImpl.java:138)at org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceProvider.invokeTarget(Axis2ServiceProvider.java:709)at org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver.invokeBusinessLogic(Axis2ServiceInOutSyncMessageReceiver.java:113)... 28 more
Caused by: java.lang.IllegalStateException: Current state not START_ELEMENT, END_ELEMENT or ENTITY_REFERENCEat com.ctc.wstx.sr.BasicStreamReader.getLocalName(BasicStreamReader.java:713)at com.primeton.ext.infra.xsd.xmlser.StreamReader.getLocalName(StreamReader.java:79)at com.primeton.data.sdo.impl.serialize.DataObjectConverter.unmarshal(DataObjectConverter.java:138)at com.primeton.infra.xsd.impl.xmlser.UnmarshallingContext.unmarshal(UnmarshallingContext.java:138)at com.primeton.infra.xsd.impl.xmlser.UnmarshallingContext.unmarshal(UnmarshallingContext.java:129)at com.primeton.ext.infra.xsd.xmlser.XMLSerializer.unmarshal(XMLSerializer.java:435)at com.primeton.ext.infra.xsd.xmlser.XMLSerializer.unmarshal(XMLSerializer.java:355)at com.primeton.ext.infra.xsd.xmlser.XMLSerializer.unmarshal(XMLSerializer.java:328)at com.primeton.sca.serialize.sdo.DataObjectTransformer.unmarshall(DataObjectTransformer.java:32)at com.primeton.ext.sca.serialize.DataTransformer.unmarshallServerReceive(DataTransformer.java:205)at com.primeton.sca.xmltransformer.OMElementTransformer.transforInputOmelement(OMElementTransformer.java:68)at com.primeton.sca.transformer.Input2InputTransformer.transform(Input2InputTransformer.java:267)at com.primeton.sca.transformer.Input2InputTransformer.transform(Input2InputTransformer.java:51)at org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:81)at org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.transform(DataTransformationInterceptor.java:200)at org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:80)at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:110)... 33 more</Exception></detail></soapenv:Fault></soapenv:Body>
</soapenv:Envelope>

原因分析:

相关的逻辑流和实体配置如下图,可以看到我们生成的wsdl在SoapUI的解析下,param1和param2缺少了命名空间前缀,调用之后也没有进入到我们的逻辑流,并且返回了异常信息。当我们需要使用对象数组作为入参时,不能使用DataObject类型,需要自己定义java bean类作为入参,否则使用EOS自带的生成WebService功能无法生成对应的接口。



解决方案:

使用自定义的bean类ImportParam作为入参,并在逻辑流中设置为数组类型

package com.eos.test;public class ImportParam {private String param1;private String param2;public String getParam1() {return param1;}public void setParam1(String param1) {this.param1 = param1;}public String getParam2() {return param2;}public void setParam2(String param2) {this.param2 = param2;}
}


最后使用SoapUi生成的报文格式如下

普元EOS7.5生成入参为数组的WebService接口相关推荐

  1. python requests库api_Python+requests库发送接口入参为xml格式的接口请求

    一)接口入参准备: 入参: <?xml version="1.0" encoding = "UTF-8"?> duoceshi 123456 DwO ...

  2. Apache CXF生成java代码用java调用Webservice接口

    这里写自定义目录标题 使用java调用webservice接口 使用java调用webservice接口 当我们使用java去访问webservice的接口时,有很多种方式,这里我们使用apache ...

  3. 普元EOS7.5,finishworkitem结束工作项报java.lang.NumberFormatException异常

    [问题描述] 关于EOS7.5,finishworkitem结束工作项报java.lang.NumberFormatException异常 具体异常信息:     Caused by: java.la ...

  4. 金蝶EAS,凭证接口,生成凭证,删除凭证,WebService接口

    凭证接口属于业务接口,调用业务接口之前,需先调用登录接口. 金蝶EAS接口调用时,可以先下载相应的WSDL文件,需要知道金蝶应用服务器地址,下载路径例如: http://192.168.1.199:6 ...

  5. aop 获取方法入参出参_ASM字节码编程 | JavaAgent+ASM字节码插桩采集方法名称及入参和出参结果并记录方法耗时...

    作者:小傅哥 博客:bugstack.cn ❝ 沉淀.分享.成长,让自己和他人都能有所收获! ❞ 一.前言 在我们实际的业务开发到上线的过程中,中间都会经过测试.那么怎么来保证测试质量呢?比如:提交了 ...

  6. ASM字节码编程 | JavaAgent+ASM字节码插桩采集方法名称以及入参和出参结果并记录方法耗时

    作者:小傅哥 博客:bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在我们实际的业务开发到上线的过程中,中间都会经过测试.那么怎么来保证测试质量呢?比如:提交了多少代码 ...

  7. 根据接口文档中的入参,生成自动化测试用例中的异常测试用例,包含用例描述,用例数据

    根据接口文档中的入参,生成自动化测试用例中的异常测试用例,包含用例描述,用例数据 参考文章: (1)根据接口文档中的入参,生成自动化测试用例中的异常测试用例,包含用例描述,用例数据 (2)https: ...

  8. 根据接口文档中的入参,生成自动化测试用例中的异常测试用例,包含用例描述,用例数据...

     不想当将军的小兵,不是好的小兵:不想做开发的测试,不是好的测试: 不管你信不信,我是信了... 一直以来,内心总有些迷茫的时候,迷茫的是作为测试既然要学那么多编程,为什么不直接去干开发呢? 看了这句 ...

  9. 普元云计算-聊聊前端工程化的实践与未来

    转载本文需注明出处:微信公众号EAWorld,违者必究.   目录:   一.前端过去一年的发展 二.工程化是前端实现的核心 三.EOS8前端工程化设计实践分析 四.总结与展望 一.前端过去一年的发展 ...

  10. 普元应用服务器高可靠方案

    转载本文请注明出处:微信公众号EAWorld 前言: 伴随着网络带宽的提升和移动终端的普及,现代的web应用平台几乎时时刻刻都在处理着来自用户成千上万的访问请求.在某些特定的场景下(如电商抢购.春运抢 ...

最新文章

  1. 利用Win32 Debug API打造自己的调试器Debugger
  2. 一文聊透binlog、redo log、undo log
  3. AttributeError: ‘Model‘ object has no attribute ‘_get_distribution_strategy
  4. Servlet 处理多种请求应用
  5. 百面机器学习—模型复杂度与模型的方差、偏差的关系
  6. sql 中WHERE字句中使用case when then
  7. Effective C++ -----条款18:让接口容易被正确使用,不易被误用
  8. directsound播放32位float类型的pcm格式音频
  9. MarkDown下载和安装图文教程
  10. android数据线接口定义,数据线接口种类(手机数据线原来还有这几种!)
  11. [渝粤教育] 中国地质大学 建筑艺术赏析 复习题
  12. 基于Java+Swing+Mysql酒店客房预订管理系统设计
  13. RabbitMQ 使用的AMQP模型解析
  14. linux下autocad完美替代品ARES Commander的安装运行
  15. 事件监听机制(一)Java事件监听
  16. 手把手教你使用R语言做LASSO 回归
  17. 什么是格局?如何提升自我格局?做到这一点就够了!
  18. 成功的 Git 分支模型
  19. IE主页被篡改为http://www.hao123.com/?tn=29065018_59_hao_pg 怎么办?
  20. 计算机算法讲解的ppt,智能计算几种经典算法解析.ppt

热门文章

  1. (二十一)美萍酒店管理系统:系统维护_系统设置_房间类型_房间费打折
  2. 简单数据查询——单表无条件和有条件查询
  3. WinForm开发(28)——TextBox(2)——Winform给TextBox设置默认值(获取焦点后默认值消失)
  4. Discuz注册页面的邮箱验证代码分析
  5. 【解决】当前操作环境不支持支付宝控件/一直处于“正在安装证书“中
  6. EXE文件反编译工具下载
  7. 3600000毫秒等于多少小时_一秒多少毫秒
  8. 汇编大作业(课程设计):简易英英词典
  9. 远程工具-SecureCRT/SecureFX
  10. 会声会影2022新版本对电脑配置要求