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 <[email protected]> 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" /
