Оригинальная проблема здесь: https://issues.apache.org/jira/browse/CXF-8119#
У меня есть сборка проекта REST Service для Red Hat Fuse.
это простая настройка службы отдыха с «планом».xml "и" cxf: rsServer ", и это прекрасно работает.
Но мне нужно использовать аннотацию @Context для javax.ws.rs, и я не могу найти способ динамически внедрить @Контекст моего класса Java.
Полный проект для проверки проблемы можно найти здесь:
https://github.com/p4535992/bug-load-context-annotation-blueprint
Моя цель - установить значение поля;
@javax.ws.rs.core.Context
public javax.ws.rs.core.HttpHeaders httpHeaders;
Другая странная ошибка, если я вызываю метод:
@GET
@Path("/ping")
@Produces(MediaType.APPLICATION_JSON)
@WebMethod(operationName = "ping")
@WebResult(name = "Response")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Success") ,
@ApiResponse(code = 500, message = "Error")
}
)
@ApiOperation( "Get operation with Response and @Default value")
public Response ping() {
logger.info("PING SIGNATURE SERVICE");
return Response.ok().entity("PING SIGNATURE SERVICE").build();
}
}
, это работает просто отлично, но если я вызываю это (я просто добавляю параметр @Context HttpHeaders httpHeaders наметод):
@GET
@Path("/ping")
@Produces(MediaType.APPLICATION_JSON)
@WebMethod(operationName = "ping")
@WebResult(name = "Response")
@ApiResponses(value =
{ @ApiResponse(code = 200, message = "Success") , @ApiResponse(code = 500, message = "Error") }
)
@ApiOperation( "Get operation with Response and @Default value")
public Response ping(@Context HttpHeaders httpHeaders)
{ logger.info("PING SIGNATURE SERVICE"); return Response.ok().entity("PING SIGNATURE SERVICE").build(); }
}
я получаю эту ошибку:
415 Error: Unsupported Media Type
В документации говорится что-то об атрибуте "spreadateContexts" для true, но, похоже, ничего не делают:
<from id="myRestSereer" uri="cxfrs:bean:myRestSereer?performInvocation=true&bindingStyle=SimpleConsumer&propagateContexts=true"/>
ДРУГОЙ пример, я не могу понять, первый метод вводится с успехом, второй дает мне «415Ошибка: неподдерживаемый тип носителя ":
/**
* THIS WORK
*/
@GET
@Path("/getheader")
public Response getHeaderDetails(
@HeaderParam("User-Agent") String userAgent,
@HeaderParam("Content-Type") String contentType,
@HeaderParam("Accept") String accept
) {
String header = "User-Agent: " + userAgent +
"\nContent-Type: " + contentType +
"\nAccept: " + accept;
return Response.status(200).entity(header).build();
}
/**
* THIS NOT WORK error "415 Error: Unsupported Media Type"
*/
@GET
@Path("/getallheader")
public Response getAllHeader(@Context HttpHeaders httpHeaders) {
// local variables
StringBuffer stringBuffer = new StringBuffer();
String headerValue = "";
for(String header : httpHeaders.getRequestHeaders().keySet()) {
headerValue = httpHeaders.getRequestHeader(header).get(0);
stringBuffer.append(header + ": " + headerValue + "\n");
}
logger.info(stringBuffer.toString());
return Response.status(200).entity(stringBuffer.toString()).build();
}
Кто-нибудь знает, что я делаю неправильно с Camel-Blueprint?