code: @Override
      public Object invoke(Exchange exchange, Object request, Object resourceObject) {
  
          JaxRsFactoryBeanCustomizer beanCustomizer = libertyJaxRsServerFactoryBean.findBeanCustomizer(resourceObject.getClass());
          //only for EJB or CDI
          if (beanCustomizer != null) {
  
              final OperationResourceInfo ori = exchange.get(OperationResourceInfo.class);
              final Message inMessage = exchange.getInMessage();
  
              /**
               * prepare the CXF objects for param injection
               * real injection should happens in XXXParamInjectionBinding
               */
              InjectionRuntimeContext irc = InjectionRuntimeContextHelper.getRuntimeContext();
              ParamInjectionMetadata pimd = new ParamInjectionMetadata(ori, inMessage);
              irc.setRuntimeCtxObject(ParamInjectionMetadata.class.getName(), pimd);
          }
  
          //for EJB or CDI or POJO
          return super.invoke(exchange, request, resourceObject);
      }
docs: override this method for EJB & CDI context&parameter field/setter method injection
  if the resourceObject is actually a EJB or CDI bean, then store the injection objects
  when Liberty injection engine triggers the injection, retrieve the injection objects in XXXParamInjecitonBinding or ContextObjectFactory