public void setWsTraceHandler(String id, WsTraceHandler ref) {
        if (id != null && ref != null) {
            RERWLOCK.writeLock().lock();
            try {
                wsTraceHandlerServices.put(id, ref);

                /*
                 * Route prev traces to the new LogHandler.
                 *
                 * This is primarily for solving the problem during server init where the WsTraceRouterImpl
                 * is registered *after* we've already issued some early startup traces. We cache
                 * these early traces in the "earlierTraces" queue in BaseTraceService, which then
                 * passes them to WsTraceRouterImpl once it's registered.
                 */
                if (earlierTraces == null) {
                    return;
                }
                for (RoutedMessage earlierTrace : earlierTraces.toArray(new RoutedMessage[earlierTraces.size()])) {
                    if (earlierTrace != null) {
                        routeTo(earlierTrace, id);
                    }
                }
            } finally {
                RERWLOCK.writeLock().unlock();
            }
        }
    }
public void setWsTraceHandler ( String id , WsTraceHandler ref ) { if ( id != null && ref != null ) { RERWLOCK . writeLock ( ) . lock ( ) ; try { wsTraceHandlerServices . put ( id , ref ) ; if ( earlierTraces == null ) { return ; } for ( RoutedMessage earlierTrace : earlierTraces . toArray ( new RoutedMessage [ earlierTraces . size ( ) ] ) ) { if ( earlierTrace != null ) { routeTo ( earlierTrace , id ) ; } } } finally { RERWLOCK . writeLock ( ) . unlock ( ) ; } } }
Add the wsTraceHandler ref. 1 or more LogHandlers may be set.