Я пытаюсь сделать небольшой транслятор сообщений для ввода нового типа данных в существующую систему. Для этого я перевожу новый XML во внутренний класс, выполняю операцию и результат, который хочу вернуть в виде строки. Когда я развертываю ответ в виде XML, проблем не возникает, но в настоящее время я получаю следующую ошибку:
java.io.IOException: org.apache.camel.InvalidPayloadException: No body available of type: javax.xml.bind.JAXBElement but has value: 00 of type: java.lang.String on: Message: 00. Exchange[ID-60345-1455623194156-43-5][Message: 00]
Я попытался заменить тип производит, outType, настроить заголовки с установкой Content-Type на text/plain, но это не помогает. Исходный BindingMode был XML. Моя цель - вернуть простую строку с помощью метода POST.
<restConfiguration component="netty4-http"
bindingMode="auto"
contextPath="/WebServices/rest"
enableCORS="true">
<endpointProperty key="nettySharedHttpServer" value="#sharedNettyHttpServer"/>
<dataFormatProperty key="prettyPrint" value="false"/>
</restConfiguration>
<!-- defines the rest services using the context-path /user -->
<rest path="/service"
consumes="application/xml"
produces="text/plain">
<description>REST service</description>
<post uri="/request"
type="org.company.generated.VmML"
outType="java.lang.String">
<route>
<to uri="bean:authenticationBean?method=checkAuthentication"/>
<bean ref="messageTranslator" method="vmmlToEntry"/>
<to uri="bean:Service?method=store"/>
<bean ref="messageTranslator" method="returnEntryToStringReplay"/>
</route>
</post>
</rest>
bindingMode="off"
? Тогда вам придется самостоятельно выполнить демаршалирование JAXB, но ничто не должно мешать вам возвращать простую строку, если это то, что вы хотите сделать. - person Ralf   schedule 16.02.2016