Repository: jena Updated Branches: refs/heads/master 6966dd3a7 -> 0cca9620d
Add /ping to the management functions (for component monitoring) Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/0cca9620 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/0cca9620 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/0cca9620 Branch: refs/heads/master Commit: 0cca9620de2024ffb1c91fc8a195de9d3b34a94f Parents: 6966dd3 Author: Andy Seaborne <[email protected]> Authored: Sat Oct 25 17:34:37 2014 +0100 Committer: Andy Seaborne <[email protected]> Committed: Sat Oct 25 17:34:37 2014 +0100 ---------------------------------------------------------------------- .../jena/fuseki/mgt/ManagementServer.java | 1 + .../org/apache/jena/fuseki/mgt/PingServlet.java | 75 ++++++++++++++++++++ 2 files changed, 76 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/0cca9620/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java ---------------------------------------------------------------------- diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java index c884bde..5e9dca9 100644 --- a/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java +++ b/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java @@ -61,6 +61,7 @@ public class ManagementServer addServlet(context, new MgtCmdServlet(), "/mgt") ; addServlet(context, new DumpServlet(), "/dump") ; addServlet(context, new StatsServlet(), "/stats") ; + addServlet(context, new PingServlet(), "/ping") ; return server ; // Old plan http://git-wip-us.apache.org/repos/asf/jena/blob/0cca9620/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/PingServlet.java ---------------------------------------------------------------------- diff --git a/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/PingServlet.java b/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/PingServlet.java new file mode 100644 index 0000000..5d4ca53 --- /dev/null +++ b/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/PingServlet.java @@ -0,0 +1,75 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.jena.fuseki.mgt; + +import static org.apache.jena.riot.WebContent.charsetUTF8 ; +import static org.apache.jena.riot.WebContent.contentTypeTextPlain ; + +import java.io.IOException ; + +import javax.servlet.ServletOutputStream ; +import javax.servlet.http.HttpServlet ; +import javax.servlet.http.HttpServletRequest ; +import javax.servlet.http.HttpServletResponse ; + +import org.apache.jena.fuseki.Fuseki ; +import org.apache.jena.riot.web.HttpNames ; +import org.apache.jena.web.HttpSC ; + +import com.hp.hpl.jena.sparql.util.Utils ; + +/** + * The ping servlet provides a low costy, uncached endpoint that can be used + * to determine if this component is running and responding. For example, + * a nagios check should use this endpoint. + */ +public class PingServlet extends HttpServlet +{ + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) { + doCommon(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) { + doCommon(req, resp); + } + + + @Override + protected void doHead(HttpServletRequest req, HttpServletResponse resp) { + doCommon(req, resp); + } + + protected void doCommon(HttpServletRequest request, HttpServletResponse response) { + try { + response.setHeader(HttpNames.hCacheControl, "must-revalidate,no-cache,no-store"); + response.setHeader(HttpNames.hPragma, "no-cache"); + response.setContentType(contentTypeTextPlain); + response.setCharacterEncoding(charsetUTF8) ; + response.setStatus(HttpSC.OK_200); + ServletOutputStream out = response.getOutputStream() ; + out.println(Utils.nowAsXSDDateTimeString()); + } catch (IOException ex) { + Fuseki.serverLog.warn("ping :: IOException :: "+ex.getMessage()); + } + } +} + +
