cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-7309) JAX-RS @Context fields throw NPE in OSGI hot deployed filters
Date Wed, 05 Apr 2017 03:37:42 GMT

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

ASF GitHub Bot commented on CXF-7309:
-------------------------------------

Github user nhtzr commented on a diff in the pull request:

    https://github.com/apache/cxf/pull/253#discussion_r109824786
  
    --- Diff: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
---
    @@ -1167,10 +1161,12 @@ public static void injectContextMethods(Object requestObject,
                     if (!cri.isSingleton()) {
                         InjectionUtils.injectThroughMethod(requestObject, method, o, message);
                     } else {
    -                    ThreadLocalProxy<Object> proxy 
    -                        = (ThreadLocalProxy<Object>)cri.getContextSetterProxy(method);
    +                    Object proxy = extractFromSetter(requestObject, method);
    +                    if (!(proxy instanceof ThreadLocalProxy)) {
    --- End diff --
    
    Hi! Sorry for the late response!
    
    The intention of this condition is to prevent NPE or ClassCastException that may happen
in case `extractFromSetter()` fails or in case it returns some completely unexpected value.
    The unexpected value could happen from the unfortunate coincidence in which a getter exists
but it doesn't follow a Bean Property pattern. 
    Another possibility would be the property being overwritten by code outside cxf (That
should be unlikely, but it is possible) and therefore no longer a proxy.


> JAX-RS @Context fields throw NPE in OSGI hot deployed filters
> -------------------------------------------------------------
>
>                 Key: CXF-7309
>                 URL: https://issues.apache.org/jira/browse/CXF-7309
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.0.12, 3.1.10
>            Reporter: Ezequiel Rosas Garcia
>
> Hello. 
> This happens with a PreMatching filter that is loaded from OSGI.
> I found that when the filter OSGI bundle is hot deployed, all other already running bundles
using it would start throwing NPE when trying to access the injected fields inside the filter
(like CXF-7248)
> This seems to happen due to other bundles retaining their ThreadLocal references in their
own AbstractResourceInfo#getSetterProxyMap() while the OSGI Proxy starts redirecting to a
new filter object which has new different ThreadLocal references as soon as it is used for
the first time after hot re deployment.
> Test: [Link](https://github.com/nhtzr/osgiee-web/blob/42faf2cbe0c54497ea706e97cd91a9ee8c29e020/src/test/java/mx/nhtzr/osgiee/web/internal/MyFilterTest.java)
> PR: [Link](https://github.com/apache/cxf/pull/253)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message