当前位置: 首页 > 知识库问答 >
问题:

CXF

左丘昕
2023-03-14

我正在使用JBoss Fuse 6.3开发一个使用Camel和CXF组件(2.17.0)的Web服务。我也使用“代码优先”的方法。我发现事情顺利与一个简单的对象作为参数(do某物方法),但无法与对象列表作为参数(更新方法)。以下是调查结果:

@WebService
public java.util.List<ObjectResponse> update(
    java.util.List<ObjectRequest> arg0
);
public ObjectResponse doSomething(
    Object parameter
);
  address="http://...."
  endpointName="ws:MyServicePort" id="MyService"
  loggingFeatureEnabled="true"
  serviceClass="com...MyService"
  <cxf:properties>;
      <entry key="dataFormat" value="POJO"/>
  </cxf:properties>
</cxf:cxfEndpoint>

当arg0仅包含一个元素(ObjectRequest)时,它不会抛出错误,但是web服务请求没有内容:

当arg0有两个元素时,它抛出以下错误:

JAVAlang.IllegalArgumentException:获取错误的参数大小以调用out服务,参数大小为1,参数大小为2。请检查消息正文是否与CXFEndpoint POJO Dataformat请求匹配。在org。阿帕奇。骆驼组成部分cxf。CxfProducer。org上的checkParameterSize(CxfProducer.java:272)[241:org.apache.camel.camel cxf:2.17.0.redhat-630187]。阿帕奇。骆驼组成部分cxf。CxfProducer。getParams(CxfProducer.java:310)[241:org.apache.camel.camel-cxf:2.17.0.redhat-630187]位于org。阿帕奇。骆驼组成部分cxf。CxfProducer。进程(CxfProducer.java:120)[241:org.apache.camel.camel-cxf:2.17.0.redhat-630187]位于org。阿帕奇。骆驼加工机发送处理器。进程(SendProcessor.java:145)[232:org.apache.camel.camel-core:2.17.0.redhat-630187]

共有1个答案

柳均
2023-03-14

解决方案是在设置exchange主体时,将列表环绕在对象数组周围,如下所示

JAVAutil。列表arg0=新的ArrayList();

需要初始化

//需要初始化

arg0.add(目标1);

arg0。添加(obj2);

交换getIn()。setBody(新对象[]{arg0});

 类似资料:
  • 问题内容: 我正在尝试获取 cxf-codegen-plugin 以从wsdl文件生成源。当调用wsdl2java手册时,会生成所需的类,但是当使用 mvn generate-sources时, 什么也不会发生,并且我收到消息“项目不需要目标”。直接调用插件没有帮助。 我的诗歌摘录如下: 问题答案: 这看起来非常像我(成功)在我的一个项目中配置该插件的方式。我希望它能奏效。(我相信您可以省略;的默

  • 问题内容: 我正在开发一些基于Web服务的应用程序,并且对Apache CXF解组有疑问。在我们的项目中,我们使用CXF 2.4.1版本。 当某些SOAP请求不正确时(例如,某些字段是文本而不是数字),CXF会抛出标准的SOAPFaultException,并且SOAP响应将使用以下标准字段构建: 项目要求说,如果发生任何故障,系统需要以其他格式响应,例如: 所以问题是:如何以某种方式覆盖此错误处

  • 问题内容: 我正在使用CXF rest客户端,该客户端适用于简单的数据类型(例如:字符串,整数)。但是,当我尝试使用自定义对象时,得到以下信息: 我这样称呼它: 这是界面中的方法: restlet库通过将XStream依赖项添加到您的路径“非常有效”来非常简单地完成此操作。CXF是否类似? 编辑#1: 我已为这是一个功能完善的CXF问题管理系统在这里。我只能希望这会得到关注。 问题答案: 它不是开

  • 问题内容: 我想为绑定JAXB的消息关闭模式验证。我正在处理客户端CXF代码(第一代WSDL)。我尝试使用 没有成功(请参阅参考CXF FAQ )。我很难找到设置此属性的编程方式。我还探讨了使CXF短路并访问解析器,解组器等的方法。 谢谢你的帮助。 问题答案: 要关闭模式验证,您应该将属性设置为。 根据您转介的文档(CXF FAQ)。 启用模式验证(将根据模式验证所有请求和响应) 要禁用架构验证(

  • 问题内容: 我一直在使用与杰克逊结合使用Apache CXF来消费和产生JSON文件的Web服务。 但是,服务的一种方法应该能够保存从移动应用程序上传的图像,该图像向我的Web服务发出多部分/表单数据POST请求,而且我不知道如何在我的内部处理这种内容类型上下文。我们通常创建“ Request”和“ Response”对象来使用和产生JSON,但是,在这种情况下,这恐怕不起作用。 这是请求格式:

  • 问题内容: 我是CXF的新手,正在尝试从WSDL创建一个客户端。我过去曾使用Metro和Axis。我下载了apache- cxf-2.3.3,并使用wsdl2java生成了客户端存根。我使用Maven并使用以下命令将其设置为pom: 构建项目时,出现以下错误: 和 看起来问题与以下事实有关:生成的代码使用Java 6功能(XmlElementRef为“ require”元素,Service为新构造

  • 问题内容: 我目前正在使用不带Spring配置文件的CXF在Web Service客户端上工作。 它工作得很好,但是我不知道如何使用Java Api设置绑定的SoapVersion。使用Spring文件,可以按以下步骤完成: 你们知道如何在Java代码中执行此操作(在Port上,在SOAPBinding上…)? 在此先感谢您的帮助! 编辑 - - - - - - - - - - - 我仍然遇到这个

  • 问题内容: 我想记录来自某个特定端点的所有传入请求和响应,并进行内容过滤。即当我有这样的要求时: 我想过滤它,以便它看起来像这样的日志 或完全删除了m:Photo元素。 我发现CXF有一些LoggingInInterceptor和LoggingOutInterceptor,我可以编写自己的拦截器来做到这一点。但是,这需要做一些工作,所以我的问题是:您知道什么更好的即用型解决方案吗? 问题答案: 我