2014-05-14 10 views
5

Ich bin mit Jboss Sicherung 6.1-final:Web-Service-Endpunkt cxf in Jboss Sicherung mit

hier ist meine einfache Route:

<route> 
    <from uri="cxf:bean:synchronousEndpoint"/> 
    <log message="Service invoked." /> 
    <process ref="simpleProcessor"/> 
</route> 

und in den simpleProcessor ich richtige Antwort setzen (dh korrespondierendes JAXB-Objekt) zum Kontext. Aber, antwortet er mit Fehler:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <soap:Fault> 
      <faultcode>soap:Server</faultcode> 
      <faultstring>Marshalling Error: java.lang.Object cannot be cast to org.w3c.dom.Element</faultstring> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

hier Spur stapeln:

Caused by: java.lang.ClassCastException: java.lang.Object cannot be cast to org.w3c.dom.Element 

gibt es keine Hinweise oder Anregungen?

Antwort

0

Bit schwer zu sagen, ohne etwas mehr Code aus dem SimpleProcessor zu sehen. Es sieht jedoch so aus, als ob Sie den falschen Parameter dataFormat verwenden.

Die cxf Komponente hat einen dataformat Parameter, der eine der sein kann folgende:

  • POJO: POJOs (Plain Old Java-Objekte) werden die Java-Parameter an die Verfahren wird auf dem Ziel aufgerufen Server. Sowohl das Protokoll als auch die logischen JAX-WS-Handler werden unterstützt.

  • PAYLOAD: PAYLOAD ist die Nachrichtennutzlast (der Inhalt des soap: body) nach der Nachrichtenkonfiguration im CXF Endpunkt angewendet. Nur der Protokoll-JAX-WS-Handler wird unterstützt. Logischer JAX-WS Handler wird nicht unterstützt.

  • MESSAGE: MESSAGE ist die Roh-Nachricht, die von der Transportschicht empfangen wird. Es ist nicht möglich, Stream zu berühren oder zu ändern, einige der CXF-Interceptors werden entfernt, wenn Sie diese Art von DataFormat verwenden, so dass Sie keine Soap-Header nach dem camel-cxf Consumer- und JAX-WS-Handler sehen können nicht unterstützt.

  • CXF_MESSAGE: Neu im Camel 2.8.2 ermöglicht CXF_MESSAGE die vollen Leistungsfähigkeit von CXF Abfangjäger für den Aufruf von der Nachricht von die Transportschicht in eine rohe SOAP-Nachricht

Der Standard Umwandlung ist POJO, was bedeutet, dass kein XML als Nachricht übergeben wird. Camel übergibt Objekte. I verdächtigen Sie versuchen möglicherweise, die Antwort als XML zu manipulieren, und dies verursacht Probleme.

Ich stieß vor einiger Zeit auf etwas Ähnliches, wo ich versuchte, das POJO in XML zu konvertieren, indem ich versuchte, eine XPATH-Abfrage auf dem XML durchzuführen, wenn ich ein POJO empfing.