public void destroy ( ) throws ServletException { try { // destroy the filter instance _filterState = FILTER_STATE_DESTROYING ; for ( int i = 0 ; ( nServicing . get ( ) > 0 ) && i < 60 ; i ++ ) { try { if ( i == 0 ) { logger . logp ( Level . INFO , CLASS_NAME , "destroy" , "waiting.to.destroy.filter.[{0}]" , _filterName ) ; } Thread . sleep ( 1000 ) ; } catch ( InterruptedException e ) { com . ibm . wsspi . webcontainer . util . FFDCWrapper . processException ( e , "com.ibm.ws.webcontainer.servlet.ServletInstance.destroy" , "377" , this ) ; } } if ( _eventSource != null && _eventSource . hasFilterListeners ( ) ) { // LIDB-3598: begin _eventSource . onFilterStartDestroy ( getFilterEvent ( ) ) ; // LIDB-3598: end _filterInstance . destroy ( ) ; // LIDB-3598: begin _eventSource . onFilterFinishDestroy ( getFilterEvent ( ) ) ; // LIDB-3598: end } else { _filterInstance . destroy ( ) ; } _filterState = FILTER_STATE_DESTROYED ; if ( null != _managedObject ) { _managedObject . release ( ) ; } } catch ( Throwable th ) { if ( _eventSource != null && _eventSource . hasFilterErrorListeners ( ) ) { FilterErrorEvent errorEvent = getFilterErrorEvent ( th ) ; _eventSource . onFilterDestroyError ( errorEvent ) ; } com . ibm . wsspi . webcontainer . util . FFDCWrapper . processException ( th , "com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.destroy" , "173" , this ) ; _filterState = FILTER_STATE_UNAVAILABLE ; throw new ServletException ( MessageFormat . format ( "Filter [{0}]: could not be destroyed" , new Object [ ] { _filterName } ) , th ) ; } }
Destroys the filter wrapper and the underlying filter instance