MessageBodyWriter no encontrado para media type = application / octet-stream, type = class org.apache.poi.xssf.usermodel.XSSFWorkbook
Tengo la siguiente clase que intenta devolver algunos datos en forma de una hoja de cálculo de Excel. Recibo el error
MessageBodyWriter no encontrado para media type = application / octet-stream, type = class org.apache.poi.xssf.usermodel.XSSFWorkbook
También he probado@Produces("application/vnd.ms-excel")
, pero obtuve errores similares. ¿Alguien tiene una sugerencia sobre cómo puedo hacer que esto devuelva una hoja de cálculo? La última vez que recibí un mensaje de error similar a este (quejándose de que no se pudo encontrar un escritor de cuerpo de mensaje para la lista de arrays), lo envuelvo en una entidad genérica. Ese truco no funcionó esta vez.
@PermitAll
@Path("uploadWorkbook")
public class ExcelUploadResource {
@Context
ResourceContext resourceContext;
@Inject
JobService jobService;
@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response list() {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Job definitions");
int rowNum = 0;
for(Job job : jobService.list()){
Row row = sheet.createRow(rowNum++);
int cellNum = 0;
for(String field : job.toList()){
Cell cell = row.createCell(cellNum++);
cell.setCellValue(field);
}
}
GenericEntity<XSSFWorkbook> entity = new GenericEntity<XSSFWorkbook>(workbook) {};
ResponseBuilder response = Response.ok(entity);
response.header("Content-Disposition",
"attachment; filename=jobs.xls");
return response.build();
}
}