[ 
https://issues.apache.org/jira/browse/CXF-7501?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16163843#comment-16163843
 ] 

Andriy Redko edited comment on CXF-7501 at 9/12/17 11:26 PM:
-------------------------------------------------------------

That's right, the JAX-RS XxxFilter classes are not detected by CXF CDI 
extension without @Provider annotation. This comes from ContainerRequestFilter 
spec 
(https://docs.oracle.com/javaee/7/api/javax/ws/rs/container/ContainerRequestFilter.html):
 Filters implementing this interface must be annotated with @Provider to be 
discovered by the JAX-RS runtime. Could you please try to annotate your filter 
with @Provider annotation? 


was (Author: reta):
That's right, the JAX-RS XxxFilter classes are not detected by CXF CDI 
extension without @Provider annotation. This comes from spec: Filters 
implementing this interface must be annotated with @Provider to be discovered 
by the JAX-RS runtime. Could you please try to annotate your filter with 
@Provider annotation? 

> Cannot inject field in ContainerRequestFilter
> ---------------------------------------------
>
>                 Key: CXF-7501
>                 URL: https://issues.apache.org/jira/browse/CXF-7501
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.1.10
>         Environment: Linux Mint 64 bit, TomEE Plus 7.0.3, JavaEE 7 
> application using MVC specification and reference implementation(Libs 
> Attached)
>            Reporter: Jeyvison Nascimento
>            Priority: Critical
>         Attachments: javax-mvc.jar, ozark.jar
>
>
> Hey folks.
> We found a weird behavior while running MVC specification(JSR 371) on TomEE 
> witch CXF. We have a *ContainerRequestFilter* defined called 
> *JaxRsContextFilter* 
> {code:java}
> @PreMatching
> @Priority(0)
> public class JaxRsContextFilter implements ContainerRequestFilter {
>     @Inject
>     private JaxRsContextProducer jaxRsContextProducer;
>     @Context
>     private Configuration configuration;
>     @Context
>     private HttpServletRequest request;
>     @Context
>     private HttpServletResponse response;
>     public JaxRsContextFilter() {
>     }
>     public void filter(ContainerRequestContext requestContext) throws 
> IOException {
>         this.jaxRsContextProducer.populate(this.configuration, this.request, 
> this.response);
>     }
> }
> {code}
> You can see that we have a JaxRsContextProducer annotated to be injected as a 
> field in our object but when JAXRSUtils is called to run the the container 
> filters it injects the fields annotated as *@Context* , not the fields 
> annotated with *@Inject*.
> {code:java}
>  for (ProviderInfo<ContainerRequestFilter> filter : containerFilters) {
>                 try {
>                     InjectionUtils.injectContexts(filter.getProvider(), 
> filter, m);
>                     filter.getProvider().filter(context);
>                 } catch (IOException ex) {
>                     throw ExceptionUtils.toInternalServerErrorException(ex, 
> null); 
>                 }
> {code}
> It causes our filter(*JaxRsContextFilter*) to throw a NullPointerException 
> when filtering the request because it uses the producer to perform some 
> actions in  this operation.
> I believe this field should be injected as well, not only the *@Context* 
> fields.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to