docs: public void service(ServletRequest req, ServletResponse res, WebAppServletInvocationEvent evt) throws IOException, ServletException {
          // 569469
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) {
              logger.entering(CLASS_NAME, "service " + this.toString());
          }
          // 569469
  
          HttpServletRequest request = (HttpServletRequest) req;
          HttpServletResponse response = (HttpServletResponse) res;
          
          HttpServletRequest httpRequest = null;
          IExtendedRequest wasreq = null;
          
          if(useOriginalRequestState){
                  
                  WebContainerRequestState reqStateSaveFilteredRequest = WebContainerRequestState.getInstance(false);
                  if(reqStateSaveFilteredRequest != null){                        
                          httpRequest = (HttpServletRequest)reqStateSaveFilteredRequest.getAttribute("unFilteredRequestObject");
                          //remove attribute
                          reqStateSaveFilteredRequest.removeAttribute("unFilteredRequestObject");
                          if(httpRequest != null) {
                                  wasreq = (IExtendedRequest) ServletUtil.unwrapRequest(httpRequest);                     
                          }
                  }               
          }
          //if httpRequest is null then get it from unwrapped
          if(httpRequest == null)
          {
                  wasreq = (IExtendedRequest) ServletUtil.unwrapRequest(request);
          }
         // IExtendedRequest wasreq = (IExtendedRequest) ServletUtil.unwrapRequest(req);
          WebAppDispatcherContext dispatchContext = (WebAppDispatcherContext) wasreq.getWebAppDispatcherContext();
  
          boolean writeResponseBody = true;
          // PK55965 Start
          boolean notify = notifyInvocationListeners && (evt != null);
          long curLastAccessTime = 0;
          long endTime = 0;
  
          if (notify) {
              evtSource.onServletStartService(evt);
              curLastAccessTime = System.currentTimeMillis();
          }
          // PK55965 End
  
          try {
              synchronized (this) {
                  nServicing++;
              }
              boolean isInclude = dispatchContext.isInclude();
              if (!isInclude) {
                  writeResponseBody = setResponseHeaders(request, response);
              }
              if (writeResponseBody) {
  
                  // begin pq65763
                  // <!-- move response writing into separate method -->
                  writeResponseToClient(request, response, wasreq);
                  // end pq65763
              }
  
              // PK55965 Start
              if (notify) {
                  endTime = System.currentTimeMillis();
                  evt.setResponseTime(endTime - curLastAccessTime);
                  evtSource.onServletFinishService(evt);
              }
          } catch (Throwable e) {
  
              if (notify) {
                  if (endTime == 0) {
                      endTime = System.currentTimeMillis();
                      evt.setResponseTime(endTime - curLastAccessTime);
                      if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) {
                          logger.logp(Level.FINE, CLASS_NAME, "service", "Notify onServletFinishService : response time "
                                      + (endTime - curLastAccessTime) + " milliseconds");
                      }
                      evtSource.onServletFinishService(evt);
                  }
                  ServletErrorEvent errorEvent = new ServletErrorEvent(this, getServletContext(), getServletName(), "FileServletWrapper", e);
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) {
                      logger.logp(Level.FINE, CLASS_NAME, "service", "Notify onServletServiceError : " + errorEvent.toString());
                  }
                  evtSource.onServletServiceError(errorEvent);
              }
              throw new ServletException(e);
  
          } finally {
              synchronized (this) {
                  nServicing--;
              }
              // 569469
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) {
                  logger.exiting(CLASS_NAME, "service");
              }
              // 569469
          }
      }