无法找到MessageBodyReader

时间:2010-03-11 13:49:17

标签: java jaxb jax-rs resteasy

我有这个界面:

 @Path("inbox")
public interface InboxQueryResourceTest {

    @POST
    @Path("{membershipExternalId}/query")
    @Consumes(MediaType.APPLICATION_XML)
    @Produces("multipart/mixed")
    public MultipartOutput query(@PathParam("membershipExternalId") final String membershipExternalId,
                             @QueryParam("page") @DefaultValue("0") final int page,
                             @QueryParam("pageSize") @DefaultValue("10") final int pageSize,
                             @QueryParam("sortProperty") final List<String> sortPropertyList,
                             @QueryParam("sortReversed") final List<Boolean> sortReversed,
                             @QueryParam("sortType") final List<String> sortTypeString,
                             final InstanceQuery instanceQuery) throws IOException;
}

我已经实现了返回MultipartOutput的方法。 我正在从Fiddler发布一个xml查询,我收到的结果没有任何问题。

但是我已经对同一个界面进行了集成测试,我发送相同的对象,我把响应放在:

final MultipartOutput multiPartOutput = getClient().query(getUserRestAuth(), 0, 25, null, null, null, instanceQuery);

但是,在集成测试中,我收到一个奇怪的错误:

  

无法找到内容类型为multipart / mixed; border =“74c5b6b4-e820-452d-abea-4c56ffb514bb”的MessageBodyReader并输入类org.jboss.resteasy.plugins.providers.multipart.MultipartOutput

任何人都有任何想法为什么只有在集成测试中才会收到此错误?

PS:有些人会说我不发送application / xml作为ContentType而是发送multipart,这当然是假的,因为对象是用所需的@XmlRootElement等注释的,否则Fiddler的POST都不会起作用。< / p>

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
providerFactory.registerProvider(org.jboss.resteasy.plugins.providers.multipart.MimeMultipartProvider.class);

答案 1 :(得分:0)

在classpath中包含多段编码的相应resteasy插件吗? (esteasy-多提供者)。

答案 2 :(得分:-1)

尝试将此方法添加到测试类中。这将注册已在您的服务器上注册的默认内置提供程序。

@BeforeClass
public static void registerProviders() {
    ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
    RegisterBuiltin.register(providerFactory);
}