2017-11-28 8 views
-2

私はラクダからウェブサービスを呼び出しています。レスポンスを評価しようとすると、エラーが発生します。私はサービスを実行したときに、私はこのエラーを持っているJBoss fuse camel:本文を評価したときのエラー

<!-- 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.consultaa[email protected]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; 
    } 
} 
+0

エラーが間違っています。あなたのPOJOクラスには、呼び出ししようとしたメソッドがありません。 –

+0

クラスには既にメソッドがあります。私はそのメソッドを持っています。 – Igorov

答えて

1

ああその恐らくcamel-cxf/CXFのMessageContentsListのことです。そのラクダの設計上の誤り - 私は思う。それでは、あなたが行うことができますと、そのMessageContentsListから最初の要素を取得し、そのPOJOクラスになり、メッセージ本文、としてそれを格納しますどの

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

によって、それを含まないように、メッセージ本文を変換することです。

これは、camel-cxf/CXFの設定方法とメッセージ本体として保存される内容によって異なります。しかし、MessageContentsListは匂いです。

+0

Excelent、それは解決策でした。 – Igorov

関連する問題