Je souhaite activer les fonctions de compression sur le maillot. J'ai un webservice qui doit retourner une liste d'événements sur le format json. Pour exemple:Problèmes de compression gzip avec le maillot
{
"page": 1,
"pageCount": 1,
"list": [
{
"pk": 1,
"state": "ACTIVE",
"locationType": "ADDRESS",
"title": "titre",
"description": "hello",
"country": "osef",
"city": "osef",
"address": "osef",
"inAgendaCount": 0,
"dateBeginning": 1498734400758
}
]
}
Mais quand j'activer la compression gzip, la réponse est comme ceci:
{
"page": 1,
"pageCount": 1,
"list": [
{
}
]
}
Tous les événements dans la liste sont coupées. Voici mon webservice:
@Component
@Path("/")
public class EventSearchWebService {
@Autowired
private EventSearchController controller;
@GET
@Path("/event/search")
@Produces(MediaType.APPLICATION_JSON)
@JsonView(SmallView.class)
public Response search(@QueryParam("keywords") String keywords, @DefaultValue("1") @QueryParam("page") Long page) {
if (keywords != null && !keywords.trim().isEmpty()) {
return Response.status(200).entity(controller.search(keywords, page)).build();
} else {
return Response.status(200).entity(controller.search(page)).build();
}
}
}
Mon ResourceConfig avec compression:
@Configuration
@ApplicationPath("/rest")
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
// Compression
register(EntityFilteringFeature.class);
EncodingFilter.enableFor(this, GZipEncoder.class);
register(EventSearchWebService.class);
register(MultiPartFeature.class);
register(ValidationFeature.class);
register(ValidationExceptionMapper.class);
register(CrossDomainContainerResponseFilter.class);
registerClasses(AccessDeniedExceptionMapper.class,
GeneralUserExceptionMapper.class,
NoResultExceptionMapper.class,
UnknowExceptionMapper.class,
ValidationExceptionMapper.class);
}
}
Et ma classe pageableList:
public class PageableList<E> {
@Getter
@Setter
@JsonView(value = {SmallView.class, FullView.class})
private long page;
@Getter
@Setter
@JsonView(value = {SmallView.class, FullView.class})
private long pageCount;
@Getter
@Setter
@JsonView(value = {SmallView.class, FullView.class})
private List<E> list;
public PageableList() {
super();
}
public PageableList(List<E> list) {
super();
this.list = list;
}
}
Il n'y a pas d'erreur dans les journaux. Y a-t-il quelqu'un qui a une idée de ce qui se passe?
Merci
EDIT: après de nouvelles recherches, je trouve que si j'envoie directement ma liste d'événements sans PageableList, j'ai l'erreur:
Can not resolve PropertyFilter with id 'org.vagrant.server.entity.EventEntity'; no FilterProvider configured (through reference chain: java.util.ArrayList[0])