Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-16567

EJB response contains ContextData that has been removed in the server side interceptors

XMLWordPrintable

      An EJB client can send and receive ContextData via an Interceptor, see addReturnedContextDataKey(String key) method on the EJBClientInvocationContext class, see:

          /**
           * Indicates to the server that a client side interceptor is interested in the context data that is stored
           * under the given key. Any object on the context data map (i.e. {@code InvocationContext.getContextData()} that is
           * present at the end of the server invocation will be serialised and returned to the client.
           *
           * If an object is present under this key and is not serializable then the request will fail.
           *
           * @param key The context data key the client interceptor is interested in
           */
          public void addReturnedContextDataKey(String key) {
              Object returnedData = getContextData().get(RETURNED_CONTEXT_DATA_KEY);
              if(returnedData == null) {
                  getContextData().put(RETURNED_CONTEXT_DATA_KEY, returnedData = new HashSet<>());
              } else if(!(returnedData instanceof Set)) {
                  throw Logs.INVOCATION.returnedContextDataKeyOfWrongType();
              }
              Set<String> keys = (Set<String>) returnedData;
              keys.add(key);
          }
      

      If a client is sending a key/value to the server and add this key with addReturnedContextDataKey(String key), a server side removed value for that key is still contained in the ContextData of the EJB response.

              rhn-support-jbaesner Joerg Baesner
              rhn-support-jbaesner Joerg Baesner
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: