You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2019/04/26 16:33:11 UTC

[skywalking] branch gao-webapp created (now fcc35bc)

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

hanahmily pushed a change to branch gao-webapp
in repository https://gitbox.apache.org/repos/asf/skywalking.git.


      at fcc35bc  Update webapp for rocketbot ui

This branch includes the following new commits:

     new fcc35bc  Update webapp for rocketbot ui

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[skywalking] 01/01: Update webapp for rocketbot ui

Posted by ha...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hanahmily pushed a commit to branch gao-webapp
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit fcc35bc064ded8ebddf85be71605846fcd608efb
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Sat Apr 27 00:30:54 2019 +0800

    Update webapp for rocketbot ui
    
     * Add NotFoundHandler to handle SPA url routing
     * Update ui dockerfile with tlp tar name
---
 .../apm/webapp/proxy/HttpClientTools.java          | 73 ----------------------
 .../apm/webapp/proxy/NotFoundHandler.java          | 50 +++++++++++++++
 apm-webapp/src/main/resources/application.yml      |  6 ++
 docker/ui/Dockerfile                               |  2 +-
 4 files changed, 57 insertions(+), 74 deletions(-)

diff --git a/apm-webapp/src/main/java/org/apache/skywalking/apm/webapp/proxy/HttpClientTools.java b/apm-webapp/src/main/java/org/apache/skywalking/apm/webapp/proxy/HttpClientTools.java
deleted file mode 100644
index 8fcc974..0000000
--- a/apm-webapp/src/main/java/org/apache/skywalking/apm/webapp/proxy/HttpClientTools.java
+++ /dev/null
@@ -1,73 +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.
- *
- */
-
-package org.apache.skywalking.apm.webapp.proxy;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.List;
-
-/**
- * @author peng-yongsheng
- */
-public enum HttpClientTools {
-    INSTANCE;
-
-    private Logger logger = LoggerFactory.getLogger(HttpClientTools.class);
-
-    public String get(String url, List<NameValuePair> params) throws IOException {
-        CloseableHttpClient httpClient = HttpClients.createDefault();
-        try {
-            HttpGet httpget = new HttpGet(url);
-            if (params == null) {
-                httpget.setURI(new URI(httpget.getURI().toString()));
-            } else {
-                String paramStr = EntityUtils.toString(new UrlEncodedFormEntity(params));
-                httpget.setURI(new URI(httpget.getURI().toString() + "?" + paramStr));
-            }
-            logger.debug("executing get request %s", httpget.getURI());
-
-            try (CloseableHttpResponse response = httpClient.execute(httpget)) {
-                HttpEntity entity = response.getEntity();
-                if (entity != null) {
-                    return EntityUtils.toString(entity);
-                }
-            }
-        } catch (Exception e) {
-            logger.warn("bad url=" + url, e);
-        } finally {
-            try {
-                httpClient.close();
-            } catch (IOException e) {
-                logger.warn("bad url=" + url, e);
-            }
-        }
-        return null;
-    }
-}
diff --git a/apm-webapp/src/main/java/org/apache/skywalking/apm/webapp/proxy/NotFoundHandler.java b/apm-webapp/src/main/java/org/apache/skywalking/apm/webapp/proxy/NotFoundHandler.java
new file mode 100644
index 0000000..183bc5c
--- /dev/null
+++ b/apm-webapp/src/main/java/org/apache/skywalking/apm/webapp/proxy/NotFoundHandler.java
@@ -0,0 +1,50 @@
+/*
+ * 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.skywalking.apm.webapp.proxy;
+
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.StreamUtils;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.servlet.NoHandlerFoundException;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+
+/**
+ * NotFoundHandler handles the single page application url routing.
+ *
+ * @author gaohongtao
+ */
+@ControllerAdvice
+public class NotFoundHandler {
+    @ExceptionHandler(NoHandlerFoundException.class)
+    public ResponseEntity<String> renderDefaultPage() {
+        try {
+            String body = StreamUtils.copyToString(new ClassPathResource("/public/index.html").getInputStream(), Charset.defaultCharset());
+            return ResponseEntity.ok().contentType(MediaType.TEXT_HTML).body(body);
+        } catch (final IOException e) {
+            LoggerFactory.getLogger(NotFoundHandler.class).error("err", e);
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("There was an error completing the action.");
+        }
+    }
+}
diff --git a/apm-webapp/src/main/resources/application.yml b/apm-webapp/src/main/resources/application.yml
index c5acbfb..1169abd 100644
--- a/apm-webapp/src/main/resources/application.yml
+++ b/apm-webapp/src/main/resources/application.yml
@@ -37,4 +37,10 @@ security:
   user:
     admin:
       password: admin
+
+spring:
+  resources:
+    add-mappings: false
+  mvc:
+    throw-exception-if-no-handler-found: true
       
diff --git a/docker/ui/Dockerfile b/docker/ui/Dockerfile
index 9f2958e..4efaa5a 100644
--- a/docker/ui/Dockerfile
+++ b/docker/ui/Dockerfile
@@ -16,7 +16,7 @@
 
 FROM openjdk:8u181-jdk-stretch
 
-ENV DIST_NAME=apache-skywalking-apm-incubating-bin \
+ENV DIST_NAME=apache-skywalking-apm-bin \
     JAVA_OPTS=" -Xms256M "
 
 COPY "$DIST_NAME.tar.gz" /