2014-05-14 21 views
5

używam bezpiecznika JBoss 6.1 końcowa:internetowej punkt końcowy usługi przy użyciu CXF bezpiecznik jboss

tutaj jest moja prosta droga:

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

aw simpleProcessor Kładę poprawną odpowiedź (tj odpowiedni obiekt JAXB) do kontekstu. Ale to reaguje z winy:

<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> 

tu ślad stosu:

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

jest jakieś wskazówki lub sugestie?

Odpowiedz

0

Trudno powiedzieć, nie widząc więcej kodu z prostego procesora. Wygląda jednak na to, że używasz niewłaściwego parametru dataFormat.

CXF składnik ma parametr dataFormat który może być dowolny z następujących:

  • POJO: POJOs (obiekty Plain Old Java) są parametry Java metody powołano na tarczy serwer. Obsługiwane są zarówno procesory JAX-WS z protokołem, jak i Logical.

  • PAYLOAD: blok danych jest zawarte w wiadomości (zawartość mydła: ciała), po konfiguracji komunikatów w końcowym CXF jest stosowane. Obsługiwany jest tylko moduł obsługi protokołu JAX-WS. Obsługa logiczna JAX-WS nie jest obsługiwana.

  • WIADOMOŚĆ: WIADOMOŚĆ jest nieprzetworzoną wiadomością odebraną z warstwy transportowej . Nie należy dotykać ani zmieniać strumienia, niektóre z przechwytujących CXF zostaną usunięte, jeśli używasz tego rodzaju DataFormat, więc nie widać żadnych nagłówków mydła po konsumenta wielbłąd-cxf i obsługi JAX-WS jest Nieobsługiwany.

  • CXF_MESSAGE: Nowe w Camel 2.8.2, CXF_MESSAGE umożliwia powołując się na pełnych możliwości przechwytujących CXF przekształcając wiadomość z warstwy transportowej do surowego komunikatu SOAP

domyślnej to POJO, co oznacza, że ​​nie przekazano XML jako wiadomość, którą Camel przekazuje obiekty. I podejrzany możesz próbować manipulować odpowiedzią jako XML i to powoduje problemy.

Wpadłem na coś podobnego do tej chwili, gdy próbowałem przekonwertować POJO na XML, próbując zrobić zapytanie XPATH na XML, gdy otrzymałem POJO.