Author: shijh
Date: Sat Sep 17 13:02:36 2016 New Revision: 1761214 URL: http://svn.apache.org/viewvc?rev=1761214&view=rev Log: Implemented: To follow Jacopo's change (rev. 1760725) on ControlFilter, cleaned up the OFBizSolrContextFilter and setup a filter chain in web.xml. Modified: ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml Modified: ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml?rev=1761214&r1=1761213&r2=1761214&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml (original) +++ ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml Sat Sep 17 13:02:36 2016 @@ -45,4 +45,29 @@ under the License. <property key="SolrMissingProductCategoryId"> <value xml:lang="en">Missing product category id.</value> </property> + + <property key="SolrErrorManageLoginFirst"> + <value xml:lang="en">To manage Solr in OFBiz, you have to login first and have the permission to do so.</value> + </property> + <property key="SolrErrorNoManagePermission"> + <value xml:lang="en">To manage Solr in OFBiz, you should have the permission to do so.</value> + </property> + <property key="SolrErrorUpdateLoginFirst"> + <value xml:lang="en">To update a Solr index in OFBiz, you have to login first and have the permission to do so.</value> + </property> + <property key="SolrErrorNoUpdatePermission"> + <value xml:lang="en">To update Solr in OFBiz, you should have the permission to do so.</value> + </property> + <property key="SolrErrorReplicateLoginFirst"> + <value xml:lang="en">To enable/disable replication of a Solr index in OFBiz, you have to login first and have the permission to do so.</value> + </property> + <property key="SolrErrorNoReplicatePermission"> + <value xml:lang="en">To enable/disable replication of a Solr index in OFBiz, you should have the permission to do so.</value> + </property> + <property key="SolrErrorViewFileLoginFirst"> + <value xml:lang="en">To view files of a Solr index in OFBiz, you have to login first and have the permission to do so.</value> + </property> + <property key="SolrErrorNoViewFilePermission"> + <value xml:lang="en">To view files of a Solr index in OFBiz, you should have the permission to do so.</value> + </property> </resource> \ No newline at end of file Modified: ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java?rev=1761214&r1=1761213&r2=1761214&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java (original) +++ ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java Sat Sep 17 13:02:36 2016 @@ -18,11 +18,10 @@ *******************************************************************************/ package org.apache.ofbiz.solr.webapp; -import static org.apache.ofbiz.base.util.UtilGenerics.checkMap; - import java.io.IOException; import java.io.OutputStream; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Properties; import javax.servlet.FilterChain; @@ -42,18 +41,15 @@ import org.apache.ofbiz.base.conversion. import org.apache.ofbiz.base.conversion.JSONConverters.MapToJSON; import org.apache.ofbiz.base.lang.JSON; import org.apache.ofbiz.base.util.Debug; -import org.apache.ofbiz.base.util.StringUtil; import org.apache.ofbiz.base.util.UtilHttp; import org.apache.ofbiz.base.util.UtilMisc; -import org.apache.ofbiz.base.util.UtilObject; +import org.apache.ofbiz.base.util.UtilProperties; import org.apache.ofbiz.base.util.UtilTimer; import org.apache.ofbiz.base.util.UtilValidate; import org.apache.ofbiz.entity.GenericValue; import org.apache.ofbiz.security.Security; import org.apache.ofbiz.webapp.WebAppUtil; -import org.apache.ofbiz.webapp.control.ContextFilter; import org.apache.ofbiz.webapp.control.LoginWorker; -import org.apache.ofbiz.webapp.website.WebSiteWorker; /** * OFBizSolrContextFilter - Restricts access to solr urls. @@ -61,18 +57,14 @@ import org.apache.ofbiz.webapp.website.W public class OFBizSolrContextFilter extends SolrDispatchFilter { public static final String module = OFBizSolrContextFilter.class.getName(); - - protected ContextFilter contextFilter = null; - protected FilterConfig config = null; + private static final String resource = "SolrUiLabels"; + /** * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig config) throws ServletException { super.init(config); - this.config = config; - contextFilter = new ContextFilter(); - contextFilter.init(config); } /** @@ -81,238 +73,95 @@ public class OFBizSolrContextFilter exte public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; - - // set the ServletContext in the request for future use - httpRequest.setAttribute("servletContext", config.getServletContext()); + Locale locale = UtilHttp.getLocale(httpRequest); - // set the webSiteId in the session - if (UtilValidate.isEmpty(httpRequest.getSession().getAttribute("webSiteId"))){ - httpRequest.getSession().setAttribute("webSiteId", WebSiteWorker.getWebSiteId(httpRequest)); - } - - // set the filesystem path of context root. - httpRequest.setAttribute("_CONTEXT_ROOT_", config.getServletContext().getRealPath("/")); - - // set the server root url - httpRequest.setAttribute("_SERVER_ROOT_URL_", UtilHttp.getServerRootUrl(httpRequest)); - - // request attributes from redirect call - String reqAttrMapHex = (String) httpRequest.getSession().getAttribute("_REQ_ATTR_MAP_"); - if (UtilValidate.isNotEmpty(reqAttrMapHex)) { - byte[] reqAttrMapBytes = StringUtil.fromHexString(reqAttrMapHex); - Map<String, Object> reqAttrMap = checkMap(UtilObject.getObject(reqAttrMapBytes), String.class, Object.class); - if (reqAttrMap != null) { - for (Map.Entry<String, Object> entry: reqAttrMap.entrySet()) { - httpRequest.setAttribute(entry.getKey(), entry.getValue()); + // set the ServletContext in the request for future use + httpRequest.setAttribute("servletContext", request.getServletContext()); + + // check if the request is from an authorized user + String servletPath = httpRequest.getServletPath(); + if (UtilValidate.isNotEmpty(servletPath) && (servletPath.startsWith("/admin/") || servletPath.endsWith("/update") + || servletPath.endsWith("/update/json") || servletPath.endsWith("/update/csv") || servletPath.endsWith("/update/extract") + || servletPath.endsWith("/replication") || servletPath.endsWith("/file") || servletPath.endsWith("/file/"))) { + HttpSession session = httpRequest.getSession(); + GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); + Security security = (Security) request.getAttribute("security"); + if (security == null) { + security = (Security) httpRequest.getServletContext().getAttribute("security"); + if (security != null) { + request.setAttribute("security", security); } } - httpRequest.getSession().removeAttribute("_REQ_ATTR_MAP_"); - } - - // ----- Context Security ----- - // check if we are disabled - String disableSecurity = config.getInitParameter("disableContextSecurity"); - if (disableSecurity != null && "Y".equalsIgnoreCase(disableSecurity)) { - chain.doFilter(httpRequest, httpResponse); - return; - } - - // check if we are told to redirect everthing - String redirectAllTo = config.getInitParameter("forceRedirectAll"); - if (UtilValidate.isNotEmpty(redirectAllTo)) { - // little trick here so we don't loop on ourself - if (httpRequest.getSession().getAttribute("_FORCE_REDIRECT_") == null) { - httpRequest.getSession().setAttribute("_FORCE_REDIRECT_", "true"); - Debug.logWarning("Redirecting user to: " + redirectAllTo, module); - - if (!redirectAllTo.toLowerCase().startsWith("http")) { - redirectAllTo = httpRequest.getContextPath() + redirectAllTo; + if (security == null) { + security = WebAppUtil.getSecurity(httpRequest.getServletContext()); + if (security != null) { + request.setAttribute("security", security); } - httpResponse.sendRedirect(redirectAllTo); - return; - } else { - httpRequest.getSession().removeAttribute("_FORCE_REDIRECT_"); - chain.doFilter(httpRequest, httpResponse); - return; } - } - - String servletPath = httpRequest.getServletPath(); - if (UtilValidate.isNotEmpty(servletPath) && servletPath.equals("/control")) { - contextFilter.doFilter(httpRequest, httpResponse, chain); - return; - } else { - // check if the request is from an authorized user - if (UtilValidate.isNotEmpty(servletPath) && (servletPath.startsWith("/admin/") || servletPath.endsWith("/update") - || servletPath.endsWith("/update/json") || servletPath.endsWith("/update/csv") || servletPath.endsWith("/update/extract") - || servletPath.endsWith("/replication") || servletPath.endsWith("/file") || servletPath.endsWith("/file/"))) { - HttpSession session = httpRequest.getSession(); - GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); - Security security = (Security) request.getAttribute("security"); - if (security == null) { - security = (Security) httpRequest.getServletContext().getAttribute("security"); - if (security != null) { - request.setAttribute("security", security); + if (servletPath.startsWith("/admin/") && (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest))) { + response.setContentType("application/json"); + MapToJSON mapToJson = new MapToJSON(); + JSON json; + OutputStream os = null; + try { + json = mapToJson.convert(UtilMisc.toMap("ofbizLogin", (Object) "true")); + os = response.getOutputStream(); + os.write(json.toString().getBytes()); + os.flush(); + String message = ""; + if (UtilValidate.isEmpty(userLogin)) { + message = UtilProperties.getMessage(resource, "SolrErrorManageLoginFirst", locale); + } else { + message = UtilProperties.getMessage(resource, "SolrErrorNoManagePermission", locale); + } + Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module); + } catch (ConversionException e) { + Debug.logError("Error while converting Solr ofbizLogin map to JSON.", module); + } finally { + if (os != null) { + os.close(); } } - if (security == null) { - security = WebAppUtil.getSecurity(httpRequest.getServletContext()); - if (security != null) { - request.setAttribute("security", security); - } + return; + } else if (servletPath.endsWith("/update") || servletPath.endsWith("/update/json") || servletPath.endsWith("/update/csv") || servletPath.endsWith("/update/extract")) { + // NOTE: the update requests are defined in an index's solrconfig.xml + // get the Solr index name from the request + if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) { + sendJsonHeaderMessage(httpRequest, httpResponse, userLogin, "SolrErrorUpdateLoginFirst", "SolrErrorNoUpdatePermission", locale); + return; } - if (servletPath.startsWith("/admin/") && (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest))) { - response.setContentType("application/json"); - MapToJSON mapToJson = new MapToJSON(); - JSON json; - OutputStream os = null; - try { - json = mapToJson.convert(UtilMisc.toMap("ofbizLogin", (Object) "true")); - os = response.getOutputStream(); - os.write(json.toString().getBytes()); - os.flush(); - String message = ""; - if (UtilValidate.isEmpty(userLogin)) { - message = "To manage Solr in OFBiz, you have to login first and have the permission to do so."; - } else { - message = "To manage Solr in OFBiz, you have to the permission to do so."; - } - Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module); - } catch (ConversionException e) { - Debug.logError("Error while converting Solr ofbizLogin map to JSON.", module); - } finally { - if (os != null) { - os.close(); - } - } + } else if (servletPath.endsWith("/replication")) { + // get the Solr index name from the request + if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) { + sendJsonHeaderMessage(httpRequest, httpResponse, userLogin, "SolrErrorReplicateLoginFirst", "SolrErrorNoReplicatePermission", locale); + return; + } + } else if (servletPath.endsWith("/file") || servletPath.endsWith("/file/")) { + // get the Solr index name from the request + if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) { + sendJsonHeaderMessage(httpRequest, httpResponse, userLogin, "SolrErrorViewFileLoginFirst", "SolrErrorNoViewFilePermission", locale); return; - } else if (servletPath.endsWith("/update") || servletPath.endsWith("/update/json") || servletPath.endsWith("/update/csv") || servletPath.endsWith("/update/extract")) { - // NOTE: the update requests are defined in an index's solrconfig.xml - // get the Solr index name from the request - if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) { - httpResponse.setContentType("application/json"); - MapToJSON mapToJson = new MapToJSON(); - Map<String, Object> responseHeader = new HashMap<String, Object>(); - JSON json; - String message = ""; - OutputStream os = null; - try { - os = httpResponse.getOutputStream(); - if (UtilValidate.isEmpty(userLogin)) { - httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - responseHeader.put("status", HttpServletResponse.SC_UNAUTHORIZED); - message = "To update a Solr index in OFBiz, you have to login first and have the permission to do so."; - responseHeader.put("message", message); - } else { - httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN); - responseHeader.put("status", HttpServletResponse.SC_FORBIDDEN); - message = "To update a Solr index in OFBiz, you have to have the permission to do so."; - responseHeader.put("message", message); - } - json = mapToJson.convert(UtilMisc.toMap("responseHeader", (Object) responseHeader)); - os.write(json.toString().getBytes()); - os.flush(); - Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module); - } catch (ConversionException e) { - Debug.logError("Error while converting responseHeader map to JSON.", module); - } finally { - if (os != null) { - os.close(); - } - } - return; - } - } else if (servletPath.endsWith("/replication")) { - // get the Solr index name from the request - if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) { - httpResponse.setContentType("application/json"); - MapToJSON mapToJson = new MapToJSON(); - Map<String, Object> responseHeader = new HashMap<String, Object>(); - JSON json; - String message = ""; - OutputStream os = null; - try { - os = httpResponse.getOutputStream(); - if (UtilValidate.isEmpty(userLogin)) { - httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - responseHeader.put("status", HttpServletResponse.SC_UNAUTHORIZED); - message = "To enable/disable replication of a Solr index in OFBiz, you have to login first and have the permission to do so."; - responseHeader.put("message", message); - } else { - httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN); - responseHeader.put("status", HttpServletResponse.SC_FORBIDDEN); - message = "To enable/disable replication of a Solr index in OFBiz, you have to have the permission to do so."; - responseHeader.put("message", message); - } - json = mapToJson.convert(UtilMisc.toMap("responseHeader", (Object) responseHeader)); - os.write(json.toString().getBytes()); - os.flush(); - Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module); - } catch (ConversionException e) { - Debug.logError("Error while converting responseHeader map to JSON.", module); - } finally { - if (os != null) { - os.close(); - } - } - return; - } - } else if (servletPath.endsWith("/file") || servletPath.endsWith("/file/")) { - // get the Solr index name from the request - if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) { - httpResponse.setContentType("application/json"); - MapToJSON mapToJson = new MapToJSON(); - Map<String, Object> responseHeader = new HashMap<String, Object>(); - JSON json; - String message = ""; - OutputStream os = null; - try { - os = httpResponse.getOutputStream(); - if (UtilValidate.isEmpty(userLogin)) { - httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - responseHeader.put("status", HttpServletResponse.SC_UNAUTHORIZED); - message = "To view files of a Solr index in OFBiz, you have to login first and have the permission to do so."; - responseHeader.put("message", message); - } else { - httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN); - responseHeader.put("status", HttpServletResponse.SC_FORBIDDEN); - message = "To view files of a Solr index in OFBiz, you have to have the permission to do so."; - responseHeader.put("message", message); - } - json = mapToJson.convert(UtilMisc.toMap("responseHeader", (Object) responseHeader)); - os.write(json.toString().getBytes()); - os.flush(); - Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module); - } catch (ConversionException e) { - Debug.logError("Error while converting responseHeader map to JSON.", module); - } finally { - if (os != null) { - os.close(); - } - } - return; - } } } - - String charset = request.getCharacterEncoding(); - String rname = null; - if (httpRequest.getRequestURI() != null) { - rname = httpRequest.getRequestURI().substring(1); - } - if (rname != null && (rname.endsWith(".css") || rname.endsWith(".js") || rname.endsWith(".ico") || rname.endsWith(".html") || rname.endsWith(".png") || rname.endsWith(".jpg") || rname.endsWith(".gif"))) { - rname = null; - } - UtilTimer timer = null; - if (Debug.timingOn() && rname != null) { - timer = new UtilTimer(); - timer.setLog(true); - timer.timerString("[" + rname + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request Begun, encoding=[" + charset + "]", module); - } - // NOTE: there's a chain.doFilter in SolrDispatchFilter's doFilter - super.doFilter(request, response, chain); - if (Debug.timingOn() && rname != null) timer.timerString("[" + rname + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request Done", module); } + + String charset = request.getCharacterEncoding(); + String rname = null; + if (httpRequest.getRequestURI() != null) { + rname = httpRequest.getRequestURI().substring(1); + } + if (rname != null && (rname.endsWith(".css") || rname.endsWith(".js") || rname.endsWith(".ico") || rname.endsWith(".html") || rname.endsWith(".png") || rname.endsWith(".jpg") || rname.endsWith(".gif"))) { + rname = null; + } + UtilTimer timer = null; + if (Debug.timingOn() && rname != null) { + timer = new UtilTimer(); + timer.setLog(true); + timer.timerString("[" + rname + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request Begun, encoding=[" + charset + "]", module); + } + // NOTE: there's a chain.doFilter in SolrDispatchFilter's doFilter + super.doFilter(request, response, chain); + if (Debug.timingOn() && rname != null) timer.timerString("[" + rname + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request Done", module); } /** @@ -320,8 +169,6 @@ public class OFBizSolrContextFilter exte */ public void destroy() { super.destroy(); - contextFilter.destroy(); - config = null; } /** @@ -339,5 +186,39 @@ public class OFBizSolrContextFilter exte cores.load(); return cores; } + + private void sendJsonHeaderMessage(HttpServletRequest httpRequest, HttpServletResponse httpResponse, GenericValue userLogin, String notLoginMessage, String noPermissionMessage, Locale locale) throws IOException { + httpResponse.setContentType("application/json"); + MapToJSON mapToJson = new MapToJSON(); + Map<String, Object> responseHeader = new HashMap<String, Object>(); + JSON json; + String message = ""; + OutputStream os = null; + + try { + os = httpResponse.getOutputStream(); + if (UtilValidate.isEmpty(userLogin)) { + httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + responseHeader.put("status", HttpServletResponse.SC_UNAUTHORIZED); + message = UtilProperties.getMessage(resource, notLoginMessage, locale); + responseHeader.put("message", message); + } else { + httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN); + responseHeader.put("status", HttpServletResponse.SC_FORBIDDEN); + message = UtilProperties.getMessage(resource, noPermissionMessage, locale); + responseHeader.put("message", message); + } + json = mapToJson.convert(UtilMisc.toMap("responseHeader", (Object) responseHeader)); + os.write(json.toString().getBytes()); + os.flush(); + Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + httpRequest.getScheme() + "://" + httpRequest.getServerName() + ")] Request error: " + message, module); + } catch (ConversionException e) { + Debug.logError("Error while converting responseHeader map to JSON.", module); + } finally { + if (os != null) { + os.close(); + } + } + } } Modified: ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml?rev=1761214&r1=1761213&r2=1761214&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml (original) +++ ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml Sat Sep 17 13:02:36 2016 @@ -17,7 +17,6 @@ --> <web-app version="3.0"> - <display-name>Apache OFBiz - Solr Component</display-name> <description>Solr Component of the Apache OFBiz Project</description> @@ -43,15 +42,15 @@ </context-param> <filter> - <filter-name>ContextFilter</filter-name> - <filter-class>org.apache.ofbiz.solr.webapp.OFBizSolrContextFilter</filter-class> + <filter-name>ControlFilter</filter-name> + <filter-class>org.apache.ofbiz.webapp.control.ControlFilter</filter-class> <init-param> <param-name>disableContextSecurity</param-name> <param-value>N</param-value> </init-param> <init-param> <param-name>allowedPaths</param-name> - <param-value>/control:/error:/css:/img:/js:/tpl:/favicon.ico:/admin:/admin.html:/#:/schema:/config</param-value> + <param-value>/control:/error:/css:/img:/js:/tpl:/favicon.ico:/admin:/admin.html:/#:/schema:/config:/:/solrdefault</param-value> </init-param> <init-param> <param-name>errorCode</param-name> @@ -63,8 +62,28 @@ </init-param> </filter> + <filter> + <filter-name>ContextFilter</filter-name> + <filter-class>org.apache.ofbiz.webapp.control.ContextFilter</filter-class> + </filter> + + <filter> + <filter-name>SolrFilter</filter-name> + <filter-class>org.apache.ofbiz.solr.webapp.OFBizSolrContextFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>ControlFilter</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + <filter-mapping> <filter-name>ContextFilter</filter-name> + <url-pattern>/control/*</url-pattern> + </filter-mapping> + + <filter-mapping> + <filter-name>SolrFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
Free forum by Nabble | Edit this page |