code: protected Object getProvider(Message message) {
  
          if (this.beanValidationProvider == null) {
              Object prop = message.getContextualProperty(this.cxfBeanValidationProviderClassName);
              if (prop != null) {
                  this.beanValidationProvider = prop;
              } else {
  
                  try {
                      /**
                       * get cxfBeanValidationProviderClass from jaxrs-2.0 and beanValidation auto feature project
                       * com.ibm.ws.jaxrs20.beanvalidation.component.BeanValidationProviderLocal
                       */
                      this.beanValidationProvider = cxfBeanValidationProviderClass.newInstance();
                  } catch (InstantiationException e) {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "init Bean Validation Provider fails. " + e.getMessage());
                      }
                  } catch (IllegalAccessException e) {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "Can't access the initialization of Bean Validation Provider. " + e.getMessage());
                      }
                  }
              }
          }
          return this.beanValidationProvider;
      }
docs: CXF wishes to use a singleton Provider, but a little tricky code?
  seems the beanValidationProvider instance can be changed if message.getContextualProperty,
  so only during last instance change and next instance change, the instance is in singleton multi-thread mode
  
  @param message
  @return