You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gh...@apache.org on 2019/05/08 19:50:14 UTC
svn commit: r1858946 -
/felix/trunk/healthcheck/core/src/main/java/org/apache/felix/hc/core/impl/filter/ServiceUnavailableFilter.java
Author: ghenzler
Date: Wed May 8 19:50:14 2019
New Revision: 1858946
URL: http://svn.apache.org/viewvc?rev=1858946&view=rev
Log:
FELIX-6097 allow to configure service ranking for context/servlet of avoid404DuringStartup helper servlet
Modified:
felix/trunk/healthcheck/core/src/main/java/org/apache/felix/hc/core/impl/filter/ServiceUnavailableFilter.java
Modified: felix/trunk/healthcheck/core/src/main/java/org/apache/felix/hc/core/impl/filter/ServiceUnavailableFilter.java
URL: http://svn.apache.org/viewvc/felix/trunk/healthcheck/core/src/main/java/org/apache/felix/hc/core/impl/filter/ServiceUnavailableFilter.java?rev=1858946&r1=1858945&r2=1858946&view=diff
==============================================================================
--- felix/trunk/healthcheck/core/src/main/java/org/apache/felix/hc/core/impl/filter/ServiceUnavailableFilter.java (original)
+++ felix/trunk/healthcheck/core/src/main/java/org/apache/felix/hc/core/impl/filter/ServiceUnavailableFilter.java Wed May 8 19:50:14 2019
@@ -90,6 +90,10 @@ public class ServiceUnavailableFilter im
private static final String CONTEXT_NAME = "internal.http.serviceunavailablefilter";
+ private static final String PROP_STARTUP_CONTEXT_SERVICE_RANKING = "avoid404DuringStartup.contextServiceRanking";
+ private static final String PROP_STARTUP_SERVLET_SERVICE_RANKING = "avoid404DuringStartup.servletServiceRanking";
+
+
@ObjectClassDefinition(name = "Health Check Service Unavailable Filter", description = "Returns a 503 Service Unavailable Page if configured tags are in non-ok result")
public @interface Config {
@@ -132,7 +136,7 @@ public class ServiceUnavailableFilter im
private boolean includeExecutionResultInHtmlComment;
private boolean autoDisableFilter;
private boolean avoid404DuringStartup;
-
+
@Reference
private ExtendedHealthCheckExecutor executor;
@@ -284,13 +288,13 @@ public class ServiceUnavailableFilter im
send503((HttpServletResponse) response, verboseTxtResult);
} else {
+ // regular request processing
+ filterChain.doFilter(request, response);
+
if (autoDisableFilter && filterServiceRegistration != null) {
LOG.info("Unregistering filter ServiceUnavailableFilter for tags {} since result was ok ", Arrays.asList(tags));
unregisterFilter();
}
-
- // regular request processing
- filterChain.doFilter(request, response);
}
}
@@ -349,10 +353,12 @@ public class ServiceUnavailableFilter im
}
private void registerHttpContext() {
+
final Dictionary<String, Object> properties = new Hashtable<>();
properties.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME, CONTEXT_NAME);
properties.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_PATH, "/");
- properties.put(Constants.SERVICE_RANKING, Integer.MIN_VALUE);
+ Object contextServiceRanking = compProperties.get(PROP_STARTUP_CONTEXT_SERVICE_RANKING);
+ properties.put(Constants.SERVICE_RANKING, contextServiceRanking!=null ? contextServiceRanking : Integer.MIN_VALUE);
this.httpContextRegistration = bundleContext.registerService(ServletContextHelper.class, new ServletContextHelper() {
}, properties);
@@ -361,9 +367,17 @@ public class ServiceUnavailableFilter im
servletProps.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT,
"(" + HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME + "=" + CONTEXT_NAME + ")");
servletProps.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, "/");
+ Object aservletServiceRanking = compProperties.get(PROP_STARTUP_SERVLET_SERVICE_RANKING);
+ servletProps.put(Constants.SERVICE_RANKING, aservletServiceRanking!=null ? aservletServiceRanking : 0L);
this.defaultServletRegistration = bundleContext.registerService(Servlet.class, new HttpServlet() {
private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ send503((HttpServletResponse) resp, "Response from dynamic startup servlet");
+ }
+
}, servletProps);
}