@@ -0,0 +1,2353 @@
+/*%0A * See the NOTICE file distributed with this work for additional%0A * information regarding copyright ownership.%0A *%0A * This is free software; you can redistribute it and/or modify it%0A * under the terms of the GNU Lesser General Public License as%0A * published by the Free Software Foundation; either version 2.1 of%0A * the License, or (at your option) any later version.%0A *%0A * This software is distributed in the hope that it will be useful,%0A * but WITHOUT ANY WARRANTY; without even the implied warranty of%0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU%0A * Lesser General Public License for more details.%0A *%0A * You should have received a copy of the GNU Lesser General Public%0A * License along with this software; if not, write to the Free%0A * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA%0A * 02110-1301 USA, or see the FSF site: http://www.fsf.org.%0A *%0A */%0A%0Apackage org.xwiki.container.servlet;%0A%0Aimport javax.servlet.ServletRequest;%0Aimport javax.servlet.ServletRequestEvent;%0Aimport javax.servlet.ServletRequestListener;%0Aimport javax.servlet.http.HttpServletRequest;%0A%0A/**%0A * Make threads names created by the application server more meaningful.%0A * %3Cp%3E%0A * When it will be possible it would be better to do this a component like a RequestInitializer component to work fo any%0A * kind of container. Right now component can't really access the initial URL.%0A * %0A * @version $Id$%0A * @since 2.0M3%0A */%0Apublic class SetThreadNameServletRequestListener implements ServletRequestListener%0A%7B%0A    /**%0A     * %7B@inheritDoc%7D%0A     * %0A     * @see javax.servlet.ServletRequestListener#requestInitialized(javax.servlet.ServletRequestEvent)%0A     */%0A    public void requestInitialized(ServletRequestEvent sre)%0A    %7B%0A        ServletRequest servletRequest = sre.getServletRequest();%0A%0A        if (servletRequest instanceof HttpServletRequest) %7B%0A            HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;%0A%0A            Thread.currentThread().setName(%0A                httpServletRequest.getRequestURL() + %22?%22 + httpServletRequest.getQueryString());%0A        %7D%0A    %7D%0A%0A    /**%0A     * %7B@inheritDoc%7D%0A     * %0A     * @see javax.servlet.ServletRequestListener#requestDestroyed(javax.servlet.ServletRequestEvent)%0A     */%0A    public void requestDestroyed(ServletRequestEvent sre)%0A    %7B%0A        // Nothing to do here%0A    %7D%0A%7D%0A

Make threads names created by the application server more meaningful