[ https://issues.apache.org/jira/browse/CXF-8119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16961951#comment-16961951 ]
Andriy Redko commented on CXF-8119: ----------------------------------- Hi [~4535992], I actually had time to look at it but do not have a final working version just yet. So you approach is valid I think, but it will apply only to resources in your control. The case with OpenApi integration (https://issues.apache.org/jira/browse/CXF-8116), with its own resources, would still be problematic. There are 2 options I am exploring right now: - using Jetty (or a y other fronting HTTP server) and CXF with Camel transport [1] - using Jetty (or a y other fronting HTTP server) and forward to CXF endpoints My idea (not proven yet) is that in this both cases CXF would be doing all the job, including the contexts injections, etc, may be more than needed but at least it should work. [1] https://cxf.apache.org/docs/apache-camel-transport.html > Can't Inject "javax.ws.rs.core.Context" annotation with camel blueprint > ----------------------------------------------------------------------- > > Key: CXF-8119 > URL: https://issues.apache.org/jira/browse/CXF-8119 > Project: CXF > Issue Type: Bug > Components: Bus, Core, JAX-RS, OSGi, Resources > Affects Versions: 3.2.7 > Reporter: Marco Tenti > Priority: Major > > I have a REST Service project build for a Red Hat Fuse. > it's a simple set up of a rest service with a "blueprint.xml" and the > "cxf:rsServer" and it's work just fine. > But i need to use the @Context annotation of javax.ws.rs and i ca't find a > way to inject dynamically the @Context on my java class. > A full project for test of the problem can be found here: > [bug-load-context-annotation-blueprint|https://github.com/p4535992/bug-load-context-annotation-blueprint] > My goal is to set the value of the field; > {code:java} > @javax.ws.rs.core.Context > public javax.ws.rs.core.HttpHeaders httpHeaders; > {code} > Another strange bug is if i call the method: > {code:java} > @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(); > } > } > {code} > it's work just fine , but if i call this (i just add the @Context HttpHeaders > httpHeaders parameter on the method) : > {code:java} > @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(); } > } > {code} > i get this error: > {code} > 415 Error: Unsupported Media Type > {code} > Teh documentation say something about the attribute "propagateContexts" to > true, but seem do nothing: > {code:} > <from id="myRestSereer" > uri="cxfrs:bean:myRestSereer?performInvocation=true&bindingStyle=SimpleConsumer&propagateContexts=true"/> > {code} > ANOTHER example i can't undestand, the first method is injected with succes, > the second give me the "415 Error: Unsupported Media Type": > {code:java} > /** > * 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(); > } > {code} > Anyone know what i'm doing wrong with camel-blueprint? -- This message was sent by Atlassian Jira (v8.3.4#803005)