Невозможно ввести аннотацию javax.ws.rs.core.Context с верблюжьей схемой на моем сервере отдыха CXF (cxf:rsServer)
Исходная проблема находится здесь:https://issues.apache.org/jira/browse/CXF-8119
У меня есть сборка проекта службы REST для Red Hat Fuse.
это простая установка службы отдыха с "blueprint.xml" и "cxf:rsServer", и она работает нормально.
Но мне нужно использовать аннотацию @Context для javax.ws.rs, и я не могу найти способ динамически вводить @Context в мой класс 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();
}
}
он работает нормально, но если я назову это (я просто добавлю параметр httpHeaders @Context 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
В документации что-то говорится об истинном значении атрибута spreadContexts, но, похоже, ничего не происходит:
<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();
}
Кто-нибудь знает, что я делаю не так с верблюжьей копией?