CXF: Для класса не найден модуль записи тела сообщения - автоматическое сопоставление непростых ресурсов

Я использую клиент CXF rest, который хорошо работает с простыми типами данных (например: строки, ints). Однако, когда я пытаюсь использовать пользовательские объекты, я получаю следующее:

Exception in thread "main" org.apache.cxf.interceptor.Fault: .No message body writer found for class : class com.company.datatype.normal.MyObject.
    at org.apache.cxf.jaxrs.client.ClientProxyImpl$BodyWriter.handleMessage(ClientProxyImpl.java:523)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
    at org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:438)
    at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:177)
    at $Proxy13.execute(Unknown Source)
    at com.company.JaxTestClient.main(JaxTestClient.java:26)
Caused by: org.apache.cxf.jaxrs.client.ClientWebApplicationException: .No message body writer found for class : class com.company.datatype.normal.MyObject.
    at org.apache.cxf.jaxrs.client.AbstractClient.reportMessageHandlerProblem(AbstractClient.java:491)
    at org.apache.cxf.jaxrs.client.AbstractClient.writeBody(AbstractClient.java:401)
    at org.apache.cxf.jaxrs.client.ClientProxyImpl$BodyWriter.handleMessage(ClientProxyImpl.java:515)
    ... 5 more

Я вызываю это так:

JaxExample jaxExample = JAXRSClientFactory.create( "http://localhost:8111/", JaxExample.class );
MyObject before = ...
MyObject after = jaxExample.execute( before );

Вот метод в интерфейсе:

@POST
@Path( "execute" )
@Produces( "application/json" )
MyObject execute( MyObject myObject );

Библиотека рестлета делает это довольно просто, добавляя XStream в зависимости от вашего пути он «просто работает». Есть ли у CXF что-то подобное?

РЕДАКТИРОВАТЬ №1:

Я разместил это как улучшение функции системы управления проблемами CXF здесь . Я могу только надеяться, что этим займутся.

39
задан javamonkey79 24 June 2011 в 12:41
поделиться