Java 找不到MessageBodyReader
我有这个界面:Java 找不到MessageBodyReader,java,jaxb,jax-rs,resteasy,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("membershipEx
@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;
}
但是在这里,从集成测试中,我收到了一个奇怪的错误:
找不到内容类型为multipart/mixed的MessageBodyReader;boundary=“74c5b6b4-e820-452d-abea-4c56ffb514bb”并键入类org.jboss.resteasy.plugins.providers.multipart.MultipartOutput
有人知道为什么只有在集成测试中我才会收到这个错误吗
PS:你们中的一些人会说我不是以ContentType而是multipart的形式发送application/xml,这当然是错误的,因为对象是用必需的@XmlRootElement等进行注释的,否则来自Fiddler的帖子都不起作用。尝试将此方法添加到测试类中。这将注册已在服务器上注册的默认内置提供程序
@BeforeClass
public static void registerProviders() {
ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
RegisterBuiltin.register(providerFactory);
}
类路径中是否包含用于多部分编码的相应resteasy插件?(esteasy多部分提供程序)。您可以尝试以下方法:
ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
providerFactory.registerProvider(org.jboss.resteasy.plugins.providers.multipart.MimeMultipartProvider.class);
也在客户端类路径中?我相信这个错误是因为客户端resteasy代理没有注册MessageBodyReader来处理多部分/混合。如果您使用的是resteasy 1.2或更高版本,那么在resteasy版本
RegisterBuiltin的情况下,在客户端的类路径中包含前面提到的jar就足够了。在ResteasyProviderFactory.getInstance()调用期间,默认情况下将调用register(providerFactory)
ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
providerFactory.registerProvider(org.jboss.resteasy.plugins.providers.multipart.MimeMultipartProvider.class);