【问题标题】:JBoss fuse camel: Error when I evaluate a bodyJBoss fuse camel:评估身体时出错
【发布时间】:2017-11-28 16:00:09
【问题描述】:

我正在从骆驼调用 Web 服务,当我尝试评估它的响应时,我得到一个错误。这是骆驼代码:

   <!-- Transformatio to the ws backend -->
        <process id="_transformToValidaAccesoUsuario" ref="transformToValidaAccesoUsuario"/>
        <!-- Invoke the ws -->
        <to id="invokeAutenticaSesion" uri="cxf:bean:autenticaSesionProxy?defaultOperationName=validarAccesoUsuario"/>
        <!-- Validate the response -->
        <choice id="validacionAutenticaUsuario">
            <when id="validacionUsuarioOK">
                <simple>${body.getResponseStatus.getDescripcionRespuesta} == 'OK'</simple>
                <log id="logValidacionUsuario" message="validacionUsuario correcto"/>
            </when>
            <otherwise id="validacionUsuarioError">
                <log id="logValidacionUsuario2" message="validacionUsuario incorrecto"/>
            </otherwise>
        </choice>

我在运行服务时遇到这个错误:

<faultstring>Failed to invoke method: getResponseStatus on null due to: org.apache.camel.component.bean.MethodNotFoundException: Method with name: getResponseStatus not found on bean: [pe.gob.sis.esb.negocio.consultaafiliados.proxy.autenticasesion.ValidarAccesoUsuarioResponseType@f482049] of type: org.apache.cxf.message.MessageContentsList. Exchange[]</faultstring>

编辑: 该类已经有方法 getResponseStatus()

package pe.gob.sis.esb.negocio.consultaafiliados.proxy.autenticasesion;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ValidarAccesoUsuarioResponseType", namespace = "http://sis.gob.pe/esb/tecnico/autenticaSesion/messages/validarAccesoUsuario/v1/", propOrder = {
"responseStatus",
"login"
})
public class ValidarAccesoUsuarioResponseType {

    protected ResponseStatus responseStatus;
    protected Login login;

    public ResponseStatus getResponseStatus() {
        return responseStatus;
    }

    public void setResponseStatus(ResponseStatus value) {
        this.responseStatus = value;
    }

    public Login getLogin() {
        return login;
    }

    public void setLogin(Login value) {
        this.login = value;
    }
}

【问题讨论】:

  • 错误告诉你出了什么问题,你的POJO类没有你尝试调用的那个方法
  • 类已经有了方法,我用那个编辑了问题

标签: apache-camel jbossfuse


【解决方案1】:

啊,这可能是来自 camel-cxf / CXF 的蹩脚MessageContentsList。我认为这是camel-cxf的设计错误。因此,您可以做的是将消息正文转换为不包含它,通过

<setBody><simple>${body[0]}</simple></setBody>

它将从 MessageContentsList 中获取第一个元素并将其存储为消息正文,即 POJO 类。

这取决于您如何配置 camel-cxf / CXF 以及存储为消息正文的内容。但是MessageContentsList 是一种气味。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 2021-12-31
    • 1970-01-01
    • 2017-05-12
    相关资源
    最近更新 更多