This is an automated email from the ASF dual-hosted git repository.

NSAmelchev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new d142c0fcfd4 IGNITE-28672 Refactor REST welcome page and resource 
loading (#13132)
d142c0fcfd4 is described below

commit d142c0fcfd45bd9c8f0ce262579fedb5340cf14a
Author: Nikita Amelchev <[email protected]>
AuthorDate: Mon May 18 09:30:08 2026 +0300

    IGNITE-28672 Refactor REST welcome page and resource loading (#13132)
---
 .../processors/rest/GridRestProcessor.java         |  13 --
 .../protocols/http/jetty/GridJettyRestHandler.java | 147 ++-------------------
 .../http/jetty/GridJettyRestProtocol.java          |  17 ++-
 .../rest/protocols/http/jetty/WelcomeHandler.java  |  92 +++++++++++++
 .../processors/rest/protocols/http/jetty/rest.html |  79 -----------
 .../ignite-rest-http}/favicon.ico                  | Bin
 .../src/main/resources/ignite-rest-http/logo.svg   |   1 +
 .../src/main/resources/ignite-rest-http/rest.html  | 122 +++++++++++++++++
 parent/pom.xml                                     |   1 +
 9 files changed, 236 insertions(+), 236 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index f26b3af040e..99e665aaa9b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -122,9 +122,6 @@ public class GridRestProcessor extends GridProcessorAdapter 
implements IgniteRes
     /** The default interval used to invalidate sessions, in seconds. */
     public static final int DFLT_SES_TOKEN_INVALIDATE_INTERVAL = 5 * 60;
 
-    /** Index of task name wrapped by VisorGatewayTask */
-    private static final int WRAPPED_TASK_IDX = 1;
-
     /** Protocols. */
     private final Collection<GridRestProtocol> protos = new ArrayList<>();
 
@@ -1104,16 +1101,6 @@ public class GridRestProcessor extends 
GridProcessorAdapter implements IgniteRes
             return new Session(clientId, UUID.randomUUID());
         }
 
-        /**
-         * Static constructor.
-         *
-         * @param sesTokId Session token ID.
-         * @return New session instance with random client ID and given 
session ID.
-         */
-        static Session fromSessionToken(UUID sesTokId) {
-            return new Session(UUID.randomUUID(), sesTokId);
-        }
-
         /**
          * Checks expiration of session and if expired then sets TIMEDOUT_FLAG.
          *
diff --git 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
index efb4aff121c..333af0f9518 100644
--- 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
+++ 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
@@ -17,15 +17,9 @@
 
 package org.apache.ignite.internal.processors.rest.protocols.http.jetty;
 
-import java.io.BufferedInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
 import java.io.OutputStream;
 import java.net.InetSocketAddress;
-import java.nio.charset.StandardCharsets;
 import java.security.cert.X509Certificate;
 import java.sql.Date;
 import java.sql.Time;
@@ -100,8 +94,8 @@ import static 
org.apache.ignite.internal.processors.rest.GridRestResponse.STATUS
  * Jetty REST handler. The following URL format is supported: {@code 
/ignite?cmd=cmdName&param1=abc&param2=123}
  */
 public class GridJettyRestHandler extends AbstractHandler {
-    /** Used to sent request charset. */
-    private static final String CHARSET = StandardCharsets.UTF_8.name();
+    /** */
+    private static final String IGNITE_CMD_PATH = "/ignite";
 
     /** */
     private static final String FAILED_TO_PARSE_FORMAT = "Failed to parse 
parameter of %s type [%s=%s]";
@@ -148,12 +142,6 @@ public class GridJettyRestHandler extends AbstractHandler {
     /** Request handlers. */
     private GridRestProtocolHandler hnd;
 
-    /** Default page. */
-    private volatile String dfltPage;
-
-    /** Favicon. */
-    private volatile byte[] favicon;
-
     /** Mapper from Java object to JSON. */
     private final ObjectMapper jsonMapper;
 
@@ -175,27 +163,6 @@ public class GridJettyRestHandler extends AbstractHandler {
         this.authChecker = authChecker;
         this.log = ctx.log(getClass());
         this.jsonMapper = new IgniteObjectMapper(ctx);
-
-        // Init default page and favicon.
-        try {
-            initDefaultPage();
-
-            if (log.isDebugEnabled())
-                log.debug("Initialized default page.");
-        }
-        catch (IOException e) {
-            U.warn(log, "Failed to initialize default page: " + 
e.getMessage());
-        }
-
-        try {
-            initFavicon();
-
-            if (log.isDebugEnabled())
-                log.debug(favicon != null ? "Initialized favicon, size: " + 
favicon.length : "Favicon is null.");
-        }
-        catch (IOException e) {
-            U.warn(log, "Failed to initialize favicon: " + e.getMessage());
-        }
     }
 
     /**
@@ -302,115 +269,17 @@ public class GridJettyRestHandler extends 
AbstractHandler {
         }
     }
 
-    /**
-     * @throws IOException If failed.
-     */
-    private void initDefaultPage() throws IOException {
-        assert dfltPage == null;
-
-        InputStream in = getClass().getResourceAsStream("rest.html");
-
-        if (in != null) {
-            LineNumberReader rdr = new LineNumberReader(new 
InputStreamReader(in, CHARSET));
-
-            try {
-                StringBuilder buf = new StringBuilder(2048);
-
-                for (String line = rdr.readLine(); line != null; line = 
rdr.readLine()) {
-                    buf.append(line);
-
-                    if (!line.endsWith(" "))
-                        buf.append(' ');
-                }
-
-                dfltPage = buf.toString();
-            }
-            finally {
-                U.closeQuiet(rdr);
-            }
-        }
-    }
-
-    /**
-     * @throws IOException If failed.
-     */
-    private void initFavicon() throws IOException {
-        assert favicon == null;
-
-        InputStream in = getClass().getResourceAsStream("favicon.ico");
-
-        if (in != null) {
-            BufferedInputStream bis = new BufferedInputStream(in);
-
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-
-            try {
-                byte[] buf = new byte[2048];
-
-                while (true) {
-                    int n = bis.read(buf);
-
-                    if (n == -1)
-                        break;
-
-                    bos.write(buf, 0, n);
-                }
-
-                favicon = bos.toByteArray();
-            }
-            finally {
-                U.closeQuiet(bis);
-            }
-        }
-    }
-
     /** {@inheritDoc} */
-    @Override public void handle(String target, Request req, 
HttpServletRequest srvReq, HttpServletResponse res)
-        throws IOException {
+    @Override public void handle(String target, Request req, 
HttpServletRequest srvReq, HttpServletResponse res) {
         if (log.isDebugEnabled())
             log.debug("Handling request [target=" + target + ", req=" + req + 
", srvReq=" + srvReq + ']');
 
-        if (target.startsWith("/ignite")) {
-            processRequest(target, srvReq, res);
-
-            req.setHandled(true);
-        }
-        else if (target.startsWith("/favicon.ico")) {
-            if (favicon == null) {
-                res.setStatus(HttpServletResponse.SC_NOT_FOUND);
-
-                req.setHandled(true);
-
-                return;
-            }
-
-            res.setStatus(HttpServletResponse.SC_OK);
-
-            res.setContentType("image/x-icon");
-
-            res.getOutputStream().write(favicon);
-            res.getOutputStream().flush();
-
-            req.setHandled(true);
-        }
-        else {
-            if (dfltPage == null) {
-                res.setStatus(HttpServletResponse.SC_NOT_FOUND);
-
-                req.setHandled(true);
-
-                return;
-            }
-
-            res.setStatus(HttpServletResponse.SC_OK);
-
-            res.setContentType("text/html");
+        if (!target.startsWith(IGNITE_CMD_PATH))
+            return;
 
-            res.getWriter().write(dfltPage);
-            res.getWriter().flush();
+        processRequest(target, srvReq, res);
 
-            req.setHandled(true);
-        }
+        req.setHandled(true);
     }
 
     /**
@@ -514,7 +383,7 @@ public class GridJettyRestHandler extends AbstractHandler {
      * @return REST request.
      * @throws IgniteCheckedException If creation failed.
      */
-    @Nullable private GridRestRequest createRequest(
+    private GridRestRequest createRequest(
         GridRestCommand cmd,
         Map<String, String> params,
         HttpServletRequest req
diff --git 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
index c1d0319d883..39a47c83a71 100644
--- 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
+++ 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
@@ -42,6 +42,8 @@ import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.server.NetworkConnector;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
+import org.eclipse.jetty.server.handler.HandlerList;
 import org.eclipse.jetty.util.MultiException;
 import org.eclipse.jetty.util.resource.Resource;
 import org.eclipse.jetty.util.thread.QueuedThreadPool;
@@ -59,9 +61,6 @@ import static org.apache.ignite.spi.IgnitePortProtocol.TCP;
  * Jetty REST protocol implementation.
  */
 public class GridJettyRestProtocol extends GridRestProtocolAdapter {
-    /**
-     *
-     */
     static {
         if (!IgniteSystemProperties.getBoolean(IGNITE_JETTY_LOG_NO_OVERRIDE)) {
             // See also 
https://www.eclipse.org/jetty/documentation/jetty-9/index.html#configuring-jetty-logging
@@ -155,9 +154,15 @@ public class GridJettyRestProtocol extends 
GridRestProtocolAdapter {
             connector.setPort(port);
 
             if (startJetty()) {
-                if (log.isInfoEnabled())
+                if (log.isInfoEnabled()) {
                     log.info(startInfo());
 
+                    boolean isSsl = 
connector.getConnectionFactory(SslConnectionFactory.class) != null;
+                    String proto = isSsl ? "https" : "http";
+
+                    log.info("HTTP REST protocol address: " + proto + "://" + 
host + ":" + port + "/");
+                }
+
                 return;
             }
         }
@@ -312,7 +317,9 @@ public class GridJettyRestProtocol extends 
GridRestProtocolAdapter {
 
         assert httpSrv != null;
 
-        httpSrv.setHandler(jettyHnd);
+        WelcomeHandler welcomeHnd = new WelcomeHandler(log);
+
+        httpSrv.setHandler(new HandlerList(jettyHnd, welcomeHnd));
 
         override(getJettyConnector());
     }
diff --git 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java
 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java
new file mode 100644
index 00000000000..72b162b467a
--- /dev/null
+++ 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java
@@ -0,0 +1,92 @@
+/*
+ * 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.ignite.internal.processors.rest.protocols.http.jetty;
+
+import java.io.IOException;
+import java.io.InputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.apache.ignite.IgniteLogger;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.handler.AbstractHandler;
+
+/**
+ * Handles welcome page.
+ */
+public class WelcomeHandler extends AbstractHandler {
+    /** Default page. */
+    private final byte[] dfltPage;
+
+    /** Favicon. */
+    private final byte[] favicon;
+
+    /** Logo. */
+    private final byte[] logo;
+
+    /** */
+    private final IgniteLogger log;
+
+    /** */
+    public WelcomeHandler(IgniteLogger log) {
+        this.log = log;
+
+        favicon = loadResource("ignite-rest-http/favicon.ico");
+        dfltPage = loadResource("ignite-rest-http/rest.html");
+        logo = loadResource("ignite-rest-http/logo.svg");
+    }
+
+    /** {@inheritDoc} */
+    @Override public void handle(String target, Request req, 
HttpServletRequest srvReq, HttpServletResponse res) throws IOException {
+        if (dfltPage == null || favicon == null || logo == null) {
+            res.setStatus(HttpServletResponse.SC_NOT_FOUND);
+            req.setHandled(true);
+
+            return;
+        }
+
+        if (target.startsWith("/favicon.ico")) {
+            res.setContentType("image/x-icon");
+            res.getOutputStream().write(favicon);
+        }
+        else if (target.startsWith("/logo.svg")) {
+            res.setContentType("image/svg+xml");
+            res.getOutputStream().write(logo);
+        }
+        else {
+            res.setContentType("text/html; charset=utf-8");
+            res.getOutputStream().write(dfltPage);
+        }
+
+        res.getOutputStream().flush();
+
+        res.setStatus(HttpServletResponse.SC_OK);
+        req.setHandled(true);
+    }
+
+    /** */
+    private byte[] loadResource(String path) {
+        try (InputStream in = 
getClass().getClassLoader().getResourceAsStream(path)) {
+            return in != null ? in.readAllBytes() : null;
+        }
+        catch (IOException e) {
+            log.error("Failed to load REST resource [path=" + path + ']', e);
+
+            return null;
+        }
+    }
+}
diff --git 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/rest.html
 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/rest.html
deleted file mode 100644
index 10c5fc1ab6f..00000000000
--- 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/rest.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!--
-  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.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
-    <meta http-equiv="Expires" content="-1">
-    <meta http-equiv="Pragma" content="no-cache">
-    <meta http-equiv="Cache-Control" content="no-cache">
-    <meta http-equiv="Content-language" content="en-US">
-    <meta http-equiv="Content-Type" content="text/html; CHARSET=UTF-8">
-    <meta http-equiv="Author" content="Apache Software Foundation">
-    <title>Apache Ignite - In-Memory Database and Caching Platform</title>
-    <style type="text/css">
-        body {
-            font-family: helvetica, verdana, arial, sans-serif;
-            font-size: 14px;
-            line-height: 1.5em;
-            color: #333;
-            margin: 10px;
-        }
-        a, a:visited, a:active, a:hover {
-            color: #333;
-            text-decoration: none;
-            border-bottom: 1px dotted;
-        }
-
-        a.img_link, a.img_link:visited, a.img_link:active, a.img_link:hover {
-            text-decoration: none;
-            border-bottom: 0;
-        }
-
-        img {
-            border: none;
-        }
-    </style>
-    <link rel="icon" type="image/x-icon" href="/favicon.ico"/>
-</head>
-<body>
-    <br>
-    <br>
-    <center>
-        <a class="img_link" href="https://ignite.apache.org"; title="Apache 
Software Foundation">
-            <img src="http://ignite.apache.org/images/logo3.png"; alt="Ignite - 
In-Memory Database and Caching Platform">
-        </a>
-        <p>
-        <div style="width: 650px; text-align: justify; padding-top: 20px">
-            <h2>REST API</h2>
-            Ignite REST API supports
-            external connectivity to Ignite via REST over HTTP. It comes in 
handy whenever Ignite Java API is not
-            available directly, but it is still needed to execute Ignite tasks 
or retrieve cached data. For example,
-            you can conveniently use Ignite REST API over HTTP from other 
non-JVM languages, such as Ruby, PHP or Python,
-            or any other language, whenever local instance of Ignite is not 
available.
-            <p>
-            Note that PHP REST example is included with Ignite distribution.
-            <p>
-            All REST HTTP commands have the following format: 
<code>http://1.2.3.4:8080/ignite?cmd=CMD&amp;...</code>, where
-            <code>'cmd'</code> is the name of the command followed by other 
command parameters. Every command may have
-            different parameters, some of which may be mandatory and some 
optional. The commands parameters may be
-            passed either via HTTP GET or POST, whichever one is preferred.
-        </div>
-    </center>
-</body>
-</html>
diff --git 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/favicon.ico
 b/modules/rest-http/src/main/resources/ignite-rest-http/favicon.ico
similarity index 100%
rename from 
modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/favicon.ico
rename to modules/rest-http/src/main/resources/ignite-rest-http/favicon.ico
diff --git a/modules/rest-http/src/main/resources/ignite-rest-http/logo.svg 
b/modules/rest-http/src/main/resources/ignite-rest-http/logo.svg
new file mode 100644
index 00000000000..ab96d1dc99e
--- /dev/null
+++ b/modules/rest-http/src/main/resources/ignite-rest-http/logo.svg
@@ -0,0 +1 @@
+<svg width="115" height="48" fill="none" 
xmlns="http://www.w3.org/2000/svg";><path d="M52.546 37.95v-1.34c-.934 
1.46-2.202 2.393-3.806 2.752a7.862 7.862 0 0 
1-4.74-.383c-1.58-.622-2.92-1.795-4.045-3.493-1.125-1.7-1.7-3.925-1.7-6.7 
0-3.255.742-5.863 2.226-7.897 1.484-2.01 3.878-3.015 7.182-3.015 2.513 0 
4.835.67 6.99 2.034 2.154 1.364 3.207 3.877 3.207 7.538V38.5c0 3.66-1.077 
6.149-3.207 7.489-2.155 1.34-4.477 2.01-6.99 2.01-4.812 
0-7.804-2.25-8.953-6.748h5.721c.407.742 1.053 1.292 1.915 1 [...]
diff --git a/modules/rest-http/src/main/resources/ignite-rest-http/rest.html 
b/modules/rest-http/src/main/resources/ignite-rest-http/rest.html
new file mode 100644
index 00000000000..99db51ad0ae
--- /dev/null
+++ b/modules/rest-http/src/main/resources/ignite-rest-http/rest.html
@@ -0,0 +1,122 @@
+<!--
+  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.
+-->
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="Expires" content="-1">
+    <meta http-equiv="Pragma" content="no-cache">
+    <meta http-equiv="Cache-Control" content="no-cache">
+    <meta http-equiv="Author" content="Apache Software Foundation">
+
+    <title>Apache Ignite - REST API</title>
+
+    <link rel="icon" href="/favicon.ico" type="image/x-icon">
+
+    <style type="text/css">
+        body {
+            font-family: Helvetica, Verdana, Arial, sans-serif;
+            font-size: 14px;
+            line-height: 1.5em;
+            color: #333;
+            margin: 20px 10px;
+        }
+        a, a:visited, a:active, a:hover {
+            color: #333;
+            text-decoration: none;
+            border-bottom: 1px dotted;
+        }
+        a.img_link, a.img_link:visited, a.img_link:active, a.img_link:hover {
+            text-decoration: none;
+            border-bottom: 0;
+        }
+        img {
+            border: none;
+            max-width: 100%;
+        }
+
+        .container {
+            max-width: 650px;
+            margin: 0 auto;
+            text-align: justify;
+        }
+
+        .logo {
+            text-align: center;
+            padding: 20px 0;
+        }
+
+        h2 {
+            color: #333;
+            margin-top: 30px;
+        }
+
+        code {
+            background: #f5f5f5;
+            padding: 2px 5px;
+            border-radius: 3px;
+        }
+    </style>
+</head>
+<body>
+<div class="container">
+    <div class="logo">
+        <a class="img_link" href="https://ignite.apache.org"; title="Apache 
Ignite">
+            <img src="/logo.svg" alt="Apache Ignite - In-Memory Database and 
Caching Platform">
+        </a>
+    </div>
+
+    <h2>REST API</h2>
+
+    <p>
+        Ignite REST API supports external connectivity to Ignite via REST over 
HTTP.
+        It comes in handy whenever Ignite Java API is not available directly, 
but it
+        is still needed to execute Ignite tasks or retrieve cached data.
+    </p>
+
+    <p>
+        For example, you can conveniently use Ignite REST API over HTTP from 
other
+        non-JVM languages, such as Ruby, PHP, Python, or any other language,
+        whenever a local instance of Ignite is not available.
+    </p>
+
+    <p>
+        You can find more detailed information about all available REST API 
commands,
+        parameters, and examples in the official documentation:
+        <a href="https://ignite.apache.org/docs/ignite2/latest/restapi"; 
target="_blank" rel="noopener">
+            Apache Ignite — REST API
+        </a>.
+    </p>
+
+    <p>Note that PHP REST example is included with Ignite distribution.</p>
+
+    <p>
+        All REST HTTP commands have the following format:
+        <code>http://1.2.3.4:8080/ignite?cmd=CMD&amp;...</code>, where
+        <code>cmd</code> is the name of the command followed by other command 
parameters.
+    </p>
+
+    <p>
+        Every command may have different parameters, some of which may be 
mandatory
+        and some optional. The command parameters may be passed either via 
HTTP GET or POST.
+    </p>
+</div>
+</body>
+</html>
diff --git a/parent/pom.xml b/parent/pom.xml
index bba4e3ac078..5cd61890ab5 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -790,6 +790,7 @@
                                         
<inputExclude>**/*.iml</inputExclude><!--IDEA files-->
                                         
<inputExclude>**/*.csv</inputExclude><!--CSV files-->
                                         
<inputExclude>**/*.jks</inputExclude><!--bin-files-->
+                                        
<inputExclude>**/*.svg</inputExclude><!--SVG-files-->
                                         
<inputExclude>**/pom-installed.xml</inputExclude><!--tmp-files-->
                                         
<inputExclude>**/keystore</inputExclude><!--bin-files-->
                                         
<inputExclude>**/keystore/*.jks</inputExclude><!--bin-files-->

Reply via email to