diff --git a/build-all.sh b/build-all.sh index af6b1d8..274f8d4 100755 --- a/build-all.sh +++ b/build-all.sh @@ -11,7 +11,7 @@ build_gradle_module() { echo "+++" cd $MODULE_PATH && { chmod +x gradlew - ./gradlew clean build + ./gradlew build if [ $? -ne 0 ] then echo "" @@ -64,7 +64,7 @@ build_maven_module() { echo "+++" cd $MODULE_PATH && { chmod +x mvnw - ./mvnw clean package + ./mvnw package if [ $? -ne 0 ] then echo "" @@ -86,6 +86,7 @@ if [[ "$MODULE" == "module6" ]] then # ADD NEW MODULES HERE # (add new modules above the rest so you get quicker feedback if it fails) + build_maven_module "spring-cloud/tracing" build_maven_module "core-java/versions" build maven_module "java-hashes" build maven_module "http-clients" diff --git a/spring-cloud/sleuth-downstream-service/README.md b/spring-cloud/sleuth-downstream-service/README.md deleted file mode 100644 index 584d5c7..0000000 --- a/spring-cloud/sleuth-downstream-service/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Log Tracing with Spring Cloud Sleuth - -This project shows how to implement tracing in a network of Spring Boot applications. - -## Companion Blog Article -The companion blog article to this repository can be found [here](https://reflectoring.io/tracing-with-spring-cloud-sleuth/). - -## Getting Started -This application is a service facing the user (a "downstream" service), meaning that -it accesses other upstream services to provide its functionality. - -1. Start the [upstream service](../sleuth-upstream-service/) with `./gradlew bootrun` -1. Start this service with `./gradlew bootrun` -1. Open `http://localhost:8080/customers-with-address/{id}` where IDs from 1-50 are - will return a valid HTTP 200 response and other IDs will return an error response. -1. Look into the log files of both services and verify that both contain the same - trace id. diff --git a/spring-cloud/sleuth-downstream-service/build.gradle b/spring-cloud/sleuth-downstream-service/build.gradle deleted file mode 100644 index 108c7c5..0000000 --- a/spring-cloud/sleuth-downstream-service/build.gradle +++ /dev/null @@ -1,45 +0,0 @@ -buildscript { - ext { - springBootVersion = '1.5.11.RELEASE' - } - repositories { - mavenCentral() - } - dependencies { - classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") - } -} - -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'org.springframework.boot' - -version = '0.0.1-SNAPSHOT' -sourceCompatibility = 11 - -repositories { - mavenLocal() - mavenCentral() -} - -ext { - springCloudVersion = 'Dalston.SR2' -} - -dependencies { - compile('org.springframework.cloud:spring-cloud-starter-feign') - compile('org.springframework.cloud:spring-cloud-starter-sleuth') - compile('org.springframework.cloud:spring-cloud-starter-zipkin') - compile('org.springframework.boot:spring-boot-starter-web') - testCompile('org.springframework.boot:spring-boot-starter-test') -} - -dependencyManagement { - imports { - mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" - } -} - -bootRun{ - jvmArgs = ["-Xdebug", "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006"] -} diff --git a/spring-cloud/sleuth-downstream-service/gradle/wrapper/gradle-wrapper.jar b/spring-cloud/sleuth-downstream-service/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 1a958be..0000000 Binary files a/spring-cloud/sleuth-downstream-service/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/spring-cloud/sleuth-downstream-service/gradle/wrapper/gradle-wrapper.properties b/spring-cloud/sleuth-downstream-service/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 38c1d48..0000000 --- a/spring-cloud/sleuth-downstream-service/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/spring-cloud/sleuth-downstream-service/gradlew b/spring-cloud/sleuth-downstream-service/gradlew deleted file mode 100755 index 4453cce..0000000 --- a/spring-cloud/sleuth-downstream-service/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save ( ) { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/spring-cloud/sleuth-downstream-service/gradlew.bat b/spring-cloud/sleuth-downstream-service/gradlew.bat deleted file mode 100644 index f955316..0000000 --- a/spring-cloud/sleuth-downstream-service/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/spring-cloud/sleuth-downstream-service/settings.gradle b/spring-cloud/sleuth-downstream-service/settings.gradle deleted file mode 100644 index e69de29..0000000 diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/AddressClient.java b/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/AddressClient.java deleted file mode 100644 index 6443500..0000000 --- a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/AddressClient.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.example.demo; - -import org.springframework.cloud.netflix.feign.FeignClient; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -@FeignClient(value = "addresses", path = "/addresses") -public interface AddressClient { - - @RequestMapping(method = RequestMethod.GET, path = "/{id}") - Address getAddressForCustomerId(@PathVariable("id") long id); - -} diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/CustomerClient.java b/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/CustomerClient.java deleted file mode 100644 index 91788dd..0000000 --- a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/CustomerClient.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.example.demo; - -import org.springframework.cloud.netflix.feign.FeignClient; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -@FeignClient(value = "customers", path = "/customers") -public interface CustomerClient { - - @RequestMapping(method = RequestMethod.GET, value = "/{id}") - Customer getCustomer(@PathVariable("id") long id); - -} diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/FeignConfiguration.java b/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/FeignConfiguration.java deleted file mode 100644 index 07e62bd..0000000 --- a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/FeignConfiguration.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.demo; - -import feign.Logger; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class FeignConfiguration { - - @Bean - public Logger.Level logLevel(){ - return Logger.Level.FULL; - } - -} diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/RequestLoggingFilterConfig.java b/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/RequestLoggingFilterConfig.java deleted file mode 100644 index b9e7fd2..0000000 --- a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/RequestLoggingFilterConfig.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.demo; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.filter.CommonsRequestLoggingFilter; - -@Configuration -public class RequestLoggingFilterConfig { - - @Bean - public CommonsRequestLoggingFilter logFilter() { - CommonsRequestLoggingFilter filter - = new CommonsRequestLoggingFilter(); - filter.setIncludeHeaders(true); - filter.setIncludeQueryString(true); - filter.setIncludePayload(true); - filter.setMaxPayloadLength(10000); - return filter; - } -} \ No newline at end of file diff --git a/spring-cloud/sleuth-downstream-service/src/main/resources/application.yml b/spring-cloud/sleuth-downstream-service/src/main/resources/application.yml deleted file mode 100644 index 133804f..0000000 --- a/spring-cloud/sleuth-downstream-service/src/main/resources/application.yml +++ /dev/null @@ -1,20 +0,0 @@ -server.port: 8080 - -spring.zipkin.baseUrl: http://localhost:9411/ - -customers: - ribbon: - eureka: - enabled: false - listOfServers: localhost:8081 - -addresses: - ribbon: - eureka: - enabled: false - listOfServers: localhost:8081 - -spring: - output: - ansi: - enabled: always diff --git a/spring-cloud/sleuth-downstream-service/src/main/resources/bootstrap.properties b/spring-cloud/sleuth-downstream-service/src/main/resources/bootstrap.properties deleted file mode 100644 index bdd488d..0000000 --- a/spring-cloud/sleuth-downstream-service/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,2 +0,0 @@ -# this file is loaded by Spring Cloud before application.properties -spring.application.name=sleuth-downstream-service \ No newline at end of file diff --git a/spring-cloud/sleuth-downstream-service/src/main/resources/logback-spring.xml b/spring-cloud/sleuth-downstream-service/src/main/resources/logback-spring.xml deleted file mode 100644 index 556d189..0000000 --- a/spring-cloud/sleuth-downstream-service/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - ​ - - - ​ - - - - - - - - - DEBUG - - - ${CONSOLE_LOG_PATTERN} - utf8 - - - - ​ - - ${LOG_FILE} - - ${LOG_FILE}.%d{yyyy-MM-dd}.gz - 7 - - - ${CONSOLE_LOG_PATTERN} - utf8 - - - ​ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ​ - - - - - - - \ No newline at end of file diff --git a/spring-cloud/sleuth-upstream-service/README.md b/spring-cloud/sleuth-upstream-service/README.md deleted file mode 100644 index 4112f03..0000000 --- a/spring-cloud/sleuth-upstream-service/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Log Tracing with Spring Cloud Sleuth - -This project shows how to implement tracing in a network of Spring Boot applications. - -## Companion Blog Article -The companion blog article to this repository can be found [here](https://reflectoring.io/tracing-with-spring-cloud-sleuth/). - -## Getting Started -This application is a service that's not facing the user (a "downstream" service), meaning that -it is accessed by user-facing services so they can provide their functionality. - -1. Start this service with `./gradlew bootrun` -1. Start the [downstream service](../sleuth-downstream-service/) with `./gradlew bootrun` -1. Open `http://localhost:8080/customers-with-address/{id}` where IDs from 1-50 are - will return a valid HTTP 200 response and other IDs will return an error response. -1. Look into the log files of both services and verify that both contain the same - trace id. diff --git a/spring-cloud/sleuth-upstream-service/build.gradle b/spring-cloud/sleuth-upstream-service/build.gradle deleted file mode 100644 index c3ce694..0000000 --- a/spring-cloud/sleuth-upstream-service/build.gradle +++ /dev/null @@ -1,44 +0,0 @@ -buildscript { - ext { - springBootVersion = '1.5.11.RELEASE' - } - repositories { - mavenCentral() - } - dependencies { - classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") - } -} - -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'org.springframework.boot' - -version = '0.0.1-SNAPSHOT' -sourceCompatibility = 11 - -repositories { - mavenLocal() - mavenCentral() -} - -ext { - springCloudVersion = 'Dalston.SR2' -} - -dependencies { - compile('org.springframework.cloud:spring-cloud-starter-sleuth') - compile('org.springframework.cloud:spring-cloud-starter-zipkin') - compile('org.springframework.boot:spring-boot-starter-web') - testCompile('org.springframework.boot:spring-boot-starter-test') -} - -dependencyManagement { - imports { - mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" - } -} - -bootRun{ - jvmArgs = ["-Xdebug", "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5007"] -} diff --git a/spring-cloud/sleuth-upstream-service/gradle/wrapper/gradle-wrapper.jar b/spring-cloud/sleuth-upstream-service/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 1a958be..0000000 Binary files a/spring-cloud/sleuth-upstream-service/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/spring-cloud/sleuth-upstream-service/gradle/wrapper/gradle-wrapper.properties b/spring-cloud/sleuth-upstream-service/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 38c1d48..0000000 --- a/spring-cloud/sleuth-upstream-service/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/spring-cloud/sleuth-upstream-service/gradlew b/spring-cloud/sleuth-upstream-service/gradlew deleted file mode 100755 index 4453cce..0000000 --- a/spring-cloud/sleuth-upstream-service/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save ( ) { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/spring-cloud/sleuth-upstream-service/gradlew.bat b/spring-cloud/sleuth-upstream-service/gradlew.bat deleted file mode 100644 index f955316..0000000 --- a/spring-cloud/sleuth-upstream-service/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/spring-cloud/sleuth-upstream-service/settings.gradle b/spring-cloud/sleuth-upstream-service/settings.gradle deleted file mode 100644 index e69de29..0000000 diff --git a/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/RequestLoggingFilterConfig.java b/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/RequestLoggingFilterConfig.java deleted file mode 100644 index b9e7fd2..0000000 --- a/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/RequestLoggingFilterConfig.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.demo; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.filter.CommonsRequestLoggingFilter; - -@Configuration -public class RequestLoggingFilterConfig { - - @Bean - public CommonsRequestLoggingFilter logFilter() { - CommonsRequestLoggingFilter filter - = new CommonsRequestLoggingFilter(); - filter.setIncludeHeaders(true); - filter.setIncludeQueryString(true); - filter.setIncludePayload(true); - filter.setMaxPayloadLength(10000); - return filter; - } -} \ No newline at end of file diff --git a/spring-cloud/sleuth-upstream-service/src/main/resources/application.yml b/spring-cloud/sleuth-upstream-service/src/main/resources/application.yml deleted file mode 100644 index 3940b33..0000000 --- a/spring-cloud/sleuth-upstream-service/src/main/resources/application.yml +++ /dev/null @@ -1,9 +0,0 @@ -logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter: DEBUG - -spring.zipkin.baseUrl: http://localhost:9411/ - -server.port: 8081 -spring: - output: - ansi: - enabled: always \ No newline at end of file diff --git a/spring-cloud/sleuth-upstream-service/src/main/resources/bootstrap.properties b/spring-cloud/sleuth-upstream-service/src/main/resources/bootstrap.properties deleted file mode 100644 index 10c4229..0000000 --- a/spring-cloud/sleuth-upstream-service/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,2 +0,0 @@ -# this file is loaded by Spring Cloud before application.properties -spring.application.name=sleuth-upstream-service \ No newline at end of file diff --git a/spring-cloud/sleuth-upstream-service/src/main/resources/logback-spring.xml b/spring-cloud/sleuth-upstream-service/src/main/resources/logback-spring.xml deleted file mode 100644 index 556d189..0000000 --- a/spring-cloud/sleuth-upstream-service/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - ​ - - - ​ - - - - - - - - - DEBUG - - - ${CONSOLE_LOG_PATTERN} - utf8 - - - - ​ - - ${LOG_FILE} - - ${LOG_FILE}.%d{yyyy-MM-dd}.gz - 7 - - - ${CONSOLE_LOG_PATTERN} - utf8 - - - ​ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ​ - - - - - - - \ No newline at end of file diff --git a/spring-cloud/spring-cloud-contract-consumer/build.gradle b/spring-cloud/spring-cloud-contract-consumer/build.gradle index a85b1f0..e69de29 100644 --- a/spring-cloud/spring-cloud-contract-consumer/build.gradle +++ b/spring-cloud/spring-cloud-contract-consumer/build.gradle @@ -1,42 +0,0 @@ -buildscript { - repositories { - mavenLocal() - jcenter() - } - dependencies { - classpath "org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}" - } -} - -repositories { - mavenLocal() - jcenter() -} - -apply plugin: 'java' -apply plugin: 'org.springframework.boot' -apply plugin: 'io.spring.dependency-management' - -dependencyManagement { - imports { - mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springcloud_version}" - } -} - -dependencies { - compile("org.springframework.boot:spring-boot-starter-data-jpa") - compile("org.springframework.boot:spring-boot-starter-web") - compile("org.springframework.cloud:spring-cloud-starter-openfeign") - compile('org.springframework.cloud:spring-cloud-starter-netflix-ribbon') - compile('com.h2database:h2:1.4.196') - // This dependency is only included so that the gradle build executes the provider build first! - // It should not be included in a real project. - compile project(':spring-cloud-contract-provider') - testCompile("org.springframework.cloud:spring-cloud-starter-contract-stub-runner") - testCompile("org.springframework.boot:spring-boot-starter-test") -} - -test { - // excluding this test since it cannot resolve the Spring Cloud Contract stub on CI - exclude 'io/reflectoring/UserClientTest**' -} diff --git a/spring-cloud/spring-cloud-contract-provider/build.gradle b/spring-cloud/spring-cloud-contract-provider/build.gradle index 10529c7..e69de29 100644 --- a/spring-cloud/spring-cloud-contract-provider/build.gradle +++ b/spring-cloud/spring-cloud-contract-provider/build.gradle @@ -1,62 +0,0 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}" - classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:${springcloudcontract_version}" - classpath "org.springframework.cloud:spring-cloud-contract-spec-pact:${springcloudcontract_pact_version}" - classpath 'au.com.dius:pact-jvm-model:2.4.18' - } -} - -repositories { - mavenLocal() - mavenCentral() -} - -apply plugin: 'java' -apply plugin: 'org.springframework.boot' -apply plugin: 'io.spring.dependency-management' -apply plugin: 'spring-cloud-contract' -apply plugin: 'maven-publish' - -group = 'io.reflectoring' -version = '1.0.0' - -dependencyManagement { - imports { - mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springcloud_version}" - } -} - -dependencies { - compile("org.springframework.boot:spring-boot-starter-data-jpa") - compile("org.springframework.boot:spring-boot-starter-web") - compile('com.h2database:h2:1.4.196') - - // add javassist >= 3.23.1-GA since earlier versions are broken in Java 11 - // see https://github.com/jboss-javassist/javassist/issues/194 - runtime('org.javassist:javassist:3.23.1-GA') - - // overriding bytebuddy to newer version that supports Java 11 - // see https://github.com/raphw/byte-buddy/issues/428 - testCompile('net.bytebuddy:byte-buddy:1.9.12') - - testCompile('org.codehaus.groovy:groovy-all:2.4.6') - testCompile("org.springframework.cloud:spring-cloud-starter-contract-verifier") - testCompile("org.springframework.cloud:spring-cloud-contract-spec:${springcloudcontract_pact_version}") - testCompile("org.springframework.boot:spring-boot-starter-test") -} - -contracts { - baseClassMappings { - baseClassMapping(".*userservice.*", "io.reflectoring.UserServiceBase") - } -} - -// a hack to locally publish the contract stubs when executing the build task -// so that it works in the CI build without a Nexus or Artifactory server -build.dependsOn('generatePomFileForStubsPublication') -build.dependsOn('publishStubsPublicationToMavenLocal') diff --git a/spring-cloud/tracing/.mvn/wrapper/MavenWrapperDownloader.java b/spring-cloud/tracing/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..e76d1f3 --- /dev/null +++ b/spring-cloud/tracing/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed 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 + * + * https://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. + */ +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/spring-cloud/tracing/.mvn/wrapper/maven-wrapper.jar b/spring-cloud/tracing/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..2cc7d4a Binary files /dev/null and b/spring-cloud/tracing/.mvn/wrapper/maven-wrapper.jar differ diff --git a/spring-cloud/tracing/.mvn/wrapper/maven-wrapper.properties b/spring-cloud/tracing/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..642d572 --- /dev/null +++ b/spring-cloud/tracing/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/spring-cloud/tracing/README.md b/spring-cloud/tracing/README.md new file mode 100644 index 0000000..b675e86 --- /dev/null +++ b/spring-cloud/tracing/README.md @@ -0,0 +1,9 @@ +# Tracing with Spring Cloud Sleuth, OpenTelemetry and Logz.io + +- run `./mvnw clean install` to build the two Spring Boot applications (`api-service` and `customer-service`) +- run `LOGZIO_REGION= LOGZIO_TRACES_TOKEN= docker-compose up --build` +- call `http://localhost:8080/customers/` (where ID is a number from 1 to 50) + +The above HTTP call goes to the `api-service`, which will call the `customer-service` for additional information. This will create a trace across both services, as should be evident in the logs with the same trace id. + +The `docker-compose` command also starts up an OpenTelemetry Collector, to which the Spring Boot apps send their traces. The OpenTelemetry Collector, in turn, sends the traces to Logz.io. \ No newline at end of file diff --git a/spring-cloud/sleuth-downstream-service/.gitignore b/spring-cloud/tracing/api-service/.gitignore similarity index 100% rename from spring-cloud/sleuth-downstream-service/.gitignore rename to spring-cloud/tracing/api-service/.gitignore diff --git a/spring-cloud/tracing/api-service/.mvn/wrapper/MavenWrapperDownloader.java b/spring-cloud/tracing/api-service/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..e76d1f3 --- /dev/null +++ b/spring-cloud/tracing/api-service/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed 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 + * + * https://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. + */ +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/spring-cloud/tracing/api-service/.mvn/wrapper/maven-wrapper.jar b/spring-cloud/tracing/api-service/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..2cc7d4a Binary files /dev/null and b/spring-cloud/tracing/api-service/.mvn/wrapper/maven-wrapper.jar differ diff --git a/spring-cloud/tracing/api-service/.mvn/wrapper/maven-wrapper.properties b/spring-cloud/tracing/api-service/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..642d572 --- /dev/null +++ b/spring-cloud/tracing/api-service/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/spring-cloud/tracing/api-service/Dockerfile b/spring-cloud/tracing/api-service/Dockerfile new file mode 100644 index 0000000..7e823e6 --- /dev/null +++ b/spring-cloud/tracing/api-service/Dockerfile @@ -0,0 +1,5 @@ +FROM adoptopenjdk/openjdk11:alpine-jre +ARG JAR_FILE=target/*.jar +COPY ${JAR_FILE} application.jar +EXPOSE 8081 +ENTRYPOINT ["java","-jar","/application.jar"] \ No newline at end of file diff --git a/spring-cloud/tracing/api-service/mvnw b/spring-cloud/tracing/api-service/mvnw new file mode 100755 index 0000000..41c0f0c --- /dev/null +++ b/spring-cloud/tracing/api-service/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/spring-cloud/tracing/api-service/mvnw.cmd b/spring-cloud/tracing/api-service/mvnw.cmd new file mode 100644 index 0000000..8611571 --- /dev/null +++ b/spring-cloud/tracing/api-service/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/spring-cloud/tracing/api-service/pom.xml b/spring-cloud/tracing/api-service/pom.xml new file mode 100644 index 0000000..b84e0b3 --- /dev/null +++ b/spring-cloud/tracing/api-service/pom.xml @@ -0,0 +1,108 @@ + + + 4.0.0 + + io.reflectoring + api-service + 1.0.0-SNAPSHOT + + + io.reflectoring.tracing + tracing-parent + 1.0.0-SNAPSHOT + ../ + + + + 2020.0.4 + 1.0.0-M12 + + + + + + + org.springframework.cloud + spring-cloud-dependencies + + ${release.train.version} + pom + import + + + + org.springframework.cloud + spring-cloud-sleuth-otel-dependencies + + ${spring-cloud-sleuth-otel.version} + import + pom + + + + + + + + spring-milestones + https://repo.spring.io/milestone + + + + + spring-milestones + https://repo.spring.io/milestone + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + + org.springframework.cloud + spring-cloud-sleuth-brave + + + + + + org.springframework.cloud + spring-cloud-sleuth-otel-autoconfigure + + + + io.opentelemetry + opentelemetry-exporter-otlp-trace + + + io.grpc + grpc-okhttp + 1.42.1 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/Address.java b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/Address.java similarity index 100% rename from spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/Address.java rename to spring-cloud/tracing/api-service/src/main/java/com/example/demo/Address.java diff --git a/spring-cloud/tracing/api-service/src/main/java/com/example/demo/AddressClient.java b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/AddressClient.java new file mode 100644 index 0000000..a5bafa8 --- /dev/null +++ b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/AddressClient.java @@ -0,0 +1,24 @@ +package com.example.demo; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +@Component +public class AddressClient { + + private final RestTemplate restTemplate; + private final String baseUrl; + + public AddressClient( + RestTemplate restTemplate, + @Value("${addressClient.baseUrl}") String baseUrl) { + this.restTemplate = restTemplate; + this.baseUrl = baseUrl; + } + + Address getAddressForCustomerId(long id) { + return restTemplate.getForObject(String.format("%s/addresses/%d", baseUrl, id), Address.class); + } + +} diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/Controller.java b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/Controller.java similarity index 95% rename from spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/Controller.java rename to spring-cloud/tracing/api-service/src/main/java/com/example/demo/Controller.java index 948561c..cf3f520 100644 --- a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/Controller.java +++ b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/Controller.java @@ -22,7 +22,7 @@ public class Controller { this.addressClient = addressClient; } - @GetMapping(path = "customers-with-address/{id}") + @GetMapping(path = "customers/{id}") public CustomerAndAddress getCustomerWithAddress(@PathVariable("id") long customerId){ logger.info("COLLECTING CUSTOMER AND ADDRESS WITH ID {} FROM UPSTREAM SERVICE", customerId); Customer customer = customerClient.getCustomer(customerId); diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/Customer.java b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/Customer.java similarity index 100% rename from spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/Customer.java rename to spring-cloud/tracing/api-service/src/main/java/com/example/demo/Customer.java diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/CustomerAndAddress.java b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/CustomerAndAddress.java similarity index 100% rename from spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/CustomerAndAddress.java rename to spring-cloud/tracing/api-service/src/main/java/com/example/demo/CustomerAndAddress.java diff --git a/spring-cloud/tracing/api-service/src/main/java/com/example/demo/CustomerClient.java b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/CustomerClient.java new file mode 100644 index 0000000..7c5d0bc --- /dev/null +++ b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/CustomerClient.java @@ -0,0 +1,29 @@ +package com.example.demo; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.client.RestTemplate; + +@Component +public class CustomerClient { + + private static final Logger logger = LoggerFactory.getLogger(CustomerClient.class); + private RestTemplate restTemplate; + private String baseUrl; + + public CustomerClient( + RestTemplate restTemplate, + @Value("${customerClient.baseUrl}") String baseUrl) { + this.restTemplate = restTemplate; + this.baseUrl = baseUrl; + } + + Customer getCustomer(@PathVariable("id") long id){ + String url = String.format("%s/customers/%d", baseUrl, id); + return restTemplate.getForObject(url, Customer.class); + } + +} diff --git a/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/DemoApplication.java b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/DemoApplication.java similarity index 76% rename from spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/DemoApplication.java rename to spring-cloud/tracing/api-service/src/main/java/com/example/demo/DemoApplication.java index 5d799be..dd9726c 100644 --- a/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/DemoApplication.java +++ b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/DemoApplication.java @@ -1,9 +1,11 @@ package com.example.demo; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication +@EnableAutoConfiguration public class DemoApplication { public static void main(String[] args) { diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/ErrorHandler.java b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/ErrorHandler.java similarity index 100% rename from spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/ErrorHandler.java rename to spring-cloud/tracing/api-service/src/main/java/com/example/demo/ErrorHandler.java diff --git a/spring-cloud/tracing/api-service/src/main/java/com/example/demo/RestConfiguration.java b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/RestConfiguration.java new file mode 100644 index 0000000..14ee2cc --- /dev/null +++ b/spring-cloud/tracing/api-service/src/main/java/com/example/demo/RestConfiguration.java @@ -0,0 +1,15 @@ +package com.example.demo; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestConfiguration { + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } + +} diff --git a/spring-cloud/tracing/api-service/src/main/resources/application.yml b/spring-cloud/tracing/api-service/src/main/resources/application.yml new file mode 100644 index 0000000..2579006 --- /dev/null +++ b/spring-cloud/tracing/api-service/src/main/resources/application.yml @@ -0,0 +1,29 @@ +server.port: 8080 + +addressClient: + baseUrl: http://customer-service:8081 + +customerClient: + baseUrl: http://customer-service:8081 + +spring: + output: + ansi: + enabled: always + application: + name: api-service + + sleuth: + otel: + exporter: + otlp: + endpoint: http://collector:4317 + +management: + endpoint: + beans: + enabled: true + endpoints: + web: + exposure: + include: beans \ No newline at end of file diff --git a/spring-cloud/tracing/api-service/src/main/resources/logback-spring.xml b/spring-cloud/tracing/api-service/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..2e394e5 --- /dev/null +++ b/spring-cloud/tracing/api-service/src/main/resources/logback-spring.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + DEBUG + + + ${CONSOLE_LOG_PATTERN} + utf8 + + + + + + + \ No newline at end of file diff --git a/spring-cloud/tracing/api-service/target/api-service-1.0.0-SNAPSHOT.jar b/spring-cloud/tracing/api-service/target/api-service-1.0.0-SNAPSHOT.jar new file mode 100644 index 0000000..fb34185 Binary files /dev/null and b/spring-cloud/tracing/api-service/target/api-service-1.0.0-SNAPSHOT.jar differ diff --git a/spring-cloud/tracing/api-service/target/api-service-1.0.0-SNAPSHOT.jar.original b/spring-cloud/tracing/api-service/target/api-service-1.0.0-SNAPSHOT.jar.original new file mode 100644 index 0000000..475477f Binary files /dev/null and b/spring-cloud/tracing/api-service/target/api-service-1.0.0-SNAPSHOT.jar.original differ diff --git a/spring-cloud/tracing/api-service/target/classes/application.yml b/spring-cloud/tracing/api-service/target/classes/application.yml new file mode 100644 index 0000000..2579006 --- /dev/null +++ b/spring-cloud/tracing/api-service/target/classes/application.yml @@ -0,0 +1,29 @@ +server.port: 8080 + +addressClient: + baseUrl: http://customer-service:8081 + +customerClient: + baseUrl: http://customer-service:8081 + +spring: + output: + ansi: + enabled: always + application: + name: api-service + + sleuth: + otel: + exporter: + otlp: + endpoint: http://collector:4317 + +management: + endpoint: + beans: + enabled: true + endpoints: + web: + exposure: + include: beans \ No newline at end of file diff --git a/spring-cloud/tracing/api-service/target/classes/com/example/demo/Address.class b/spring-cloud/tracing/api-service/target/classes/com/example/demo/Address.class new file mode 100644 index 0000000..1801b16 Binary files /dev/null and b/spring-cloud/tracing/api-service/target/classes/com/example/demo/Address.class differ diff --git a/spring-cloud/tracing/api-service/target/classes/com/example/demo/AddressClient.class b/spring-cloud/tracing/api-service/target/classes/com/example/demo/AddressClient.class new file mode 100644 index 0000000..c88d489 Binary files /dev/null and b/spring-cloud/tracing/api-service/target/classes/com/example/demo/AddressClient.class differ diff --git a/spring-cloud/tracing/api-service/target/classes/com/example/demo/Controller.class b/spring-cloud/tracing/api-service/target/classes/com/example/demo/Controller.class new file mode 100644 index 0000000..1c89c04 Binary files /dev/null and b/spring-cloud/tracing/api-service/target/classes/com/example/demo/Controller.class differ diff --git a/spring-cloud/tracing/api-service/target/classes/com/example/demo/Customer.class b/spring-cloud/tracing/api-service/target/classes/com/example/demo/Customer.class new file mode 100644 index 0000000..042b020 Binary files /dev/null and b/spring-cloud/tracing/api-service/target/classes/com/example/demo/Customer.class differ diff --git a/spring-cloud/tracing/api-service/target/classes/com/example/demo/CustomerAndAddress.class b/spring-cloud/tracing/api-service/target/classes/com/example/demo/CustomerAndAddress.class new file mode 100644 index 0000000..652d6ce Binary files /dev/null and b/spring-cloud/tracing/api-service/target/classes/com/example/demo/CustomerAndAddress.class differ diff --git a/spring-cloud/tracing/api-service/target/classes/com/example/demo/CustomerClient.class b/spring-cloud/tracing/api-service/target/classes/com/example/demo/CustomerClient.class new file mode 100644 index 0000000..3ecc6b4 Binary files /dev/null and b/spring-cloud/tracing/api-service/target/classes/com/example/demo/CustomerClient.class differ diff --git a/spring-cloud/tracing/api-service/target/classes/com/example/demo/DemoApplication.class b/spring-cloud/tracing/api-service/target/classes/com/example/demo/DemoApplication.class new file mode 100644 index 0000000..1a9fd7b Binary files /dev/null and b/spring-cloud/tracing/api-service/target/classes/com/example/demo/DemoApplication.class differ diff --git a/spring-cloud/tracing/api-service/target/classes/com/example/demo/ErrorHandler.class b/spring-cloud/tracing/api-service/target/classes/com/example/demo/ErrorHandler.class new file mode 100644 index 0000000..f5ca8a5 Binary files /dev/null and b/spring-cloud/tracing/api-service/target/classes/com/example/demo/ErrorHandler.class differ diff --git a/spring-cloud/tracing/api-service/target/classes/com/example/demo/RestConfiguration.class b/spring-cloud/tracing/api-service/target/classes/com/example/demo/RestConfiguration.class new file mode 100644 index 0000000..26a7951 Binary files /dev/null and b/spring-cloud/tracing/api-service/target/classes/com/example/demo/RestConfiguration.class differ diff --git a/spring-cloud/tracing/api-service/target/classes/logback-spring.xml b/spring-cloud/tracing/api-service/target/classes/logback-spring.xml new file mode 100644 index 0000000..2e394e5 --- /dev/null +++ b/spring-cloud/tracing/api-service/target/classes/logback-spring.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + DEBUG + + + ${CONSOLE_LOG_PATTERN} + utf8 + + + + + + + \ No newline at end of file diff --git a/spring-cloud/tracing/api-service/target/maven-archiver/pom.properties b/spring-cloud/tracing/api-service/target/maven-archiver/pom.properties new file mode 100644 index 0000000..a7b897c --- /dev/null +++ b/spring-cloud/tracing/api-service/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=api-service +groupId=io.reflectoring +version=1.0.0-SNAPSHOT diff --git a/spring-cloud/tracing/api-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/spring-cloud/tracing/api-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..b1a06d1 --- /dev/null +++ b/spring-cloud/tracing/api-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,9 @@ +com/example/demo/DemoApplication.class +com/example/demo/Address.class +com/example/demo/Customer.class +com/example/demo/ErrorHandler.class +com/example/demo/CustomerClient.class +com/example/demo/Controller.class +com/example/demo/RestConfiguration.class +com/example/demo/CustomerAndAddress.class +com/example/demo/AddressClient.class diff --git a/spring-cloud/tracing/api-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/spring-cloud/tracing/api-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..8d92f98 --- /dev/null +++ b/spring-cloud/tracing/api-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,9 @@ +/home/tom/IdeaProjects/tracing/api-service/src/main/java/com/example/demo/ErrorHandler.java +/home/tom/IdeaProjects/tracing/api-service/src/main/java/com/example/demo/Controller.java +/home/tom/IdeaProjects/tracing/api-service/src/main/java/com/example/demo/RestConfiguration.java +/home/tom/IdeaProjects/tracing/api-service/src/main/java/com/example/demo/Customer.java +/home/tom/IdeaProjects/tracing/api-service/src/main/java/com/example/demo/CustomerClient.java +/home/tom/IdeaProjects/tracing/api-service/src/main/java/com/example/demo/AddressClient.java +/home/tom/IdeaProjects/tracing/api-service/src/main/java/com/example/demo/Address.java +/home/tom/IdeaProjects/tracing/api-service/src/main/java/com/example/demo/DemoApplication.java +/home/tom/IdeaProjects/tracing/api-service/src/main/java/com/example/demo/CustomerAndAddress.java diff --git a/spring-cloud/sleuth-upstream-service/.gitignore b/spring-cloud/tracing/customer-service/.gitignore similarity index 100% rename from spring-cloud/sleuth-upstream-service/.gitignore rename to spring-cloud/tracing/customer-service/.gitignore diff --git a/spring-cloud/tracing/customer-service/.mvn/wrapper/MavenWrapperDownloader.java b/spring-cloud/tracing/customer-service/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..e76d1f3 --- /dev/null +++ b/spring-cloud/tracing/customer-service/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed 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 + * + * https://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. + */ +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/spring-cloud/tracing/customer-service/.mvn/wrapper/maven-wrapper.jar b/spring-cloud/tracing/customer-service/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..2cc7d4a Binary files /dev/null and b/spring-cloud/tracing/customer-service/.mvn/wrapper/maven-wrapper.jar differ diff --git a/spring-cloud/tracing/customer-service/.mvn/wrapper/maven-wrapper.properties b/spring-cloud/tracing/customer-service/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..642d572 --- /dev/null +++ b/spring-cloud/tracing/customer-service/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/spring-cloud/tracing/customer-service/Dockerfile b/spring-cloud/tracing/customer-service/Dockerfile new file mode 100644 index 0000000..7e823e6 --- /dev/null +++ b/spring-cloud/tracing/customer-service/Dockerfile @@ -0,0 +1,5 @@ +FROM adoptopenjdk/openjdk11:alpine-jre +ARG JAR_FILE=target/*.jar +COPY ${JAR_FILE} application.jar +EXPOSE 8081 +ENTRYPOINT ["java","-jar","/application.jar"] \ No newline at end of file diff --git a/spring-cloud/tracing/customer-service/mvnw b/spring-cloud/tracing/customer-service/mvnw new file mode 100755 index 0000000..41c0f0c --- /dev/null +++ b/spring-cloud/tracing/customer-service/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/spring-cloud/tracing/customer-service/mvnw.cmd b/spring-cloud/tracing/customer-service/mvnw.cmd new file mode 100644 index 0000000..8611571 --- /dev/null +++ b/spring-cloud/tracing/customer-service/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/spring-cloud/tracing/customer-service/pom.xml b/spring-cloud/tracing/customer-service/pom.xml new file mode 100644 index 0000000..a6fce4a --- /dev/null +++ b/spring-cloud/tracing/customer-service/pom.xml @@ -0,0 +1,108 @@ + + + 4.0.0 + + io.reflectoring + customer-service + 1.0.0-SNAPSHOT + + + io.reflectoring.tracing + tracing-parent + 1.0.0-SNAPSHOT + ../ + + + + 2020.0.4 + 1.0.0-M12 + + + + + + + org.springframework.cloud + spring-cloud-dependencies + + ${release.train.version} + pom + import + + + + org.springframework.cloud + spring-cloud-sleuth-otel-dependencies + + ${spring-cloud-sleuth-otel.version} + import + pom + + + + + + + + spring-milestones + https://repo.spring.io/milestone + + + + + spring-milestones + https://repo.spring.io/milestone + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + + org.springframework.cloud + spring-cloud-sleuth-brave + + + + + + org.springframework.cloud + spring-cloud-sleuth-otel-autoconfigure + + + + io.opentelemetry + opentelemetry-exporter-otlp-trace + + + io.grpc + grpc-okhttp + 1.42.1 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/Address.java b/spring-cloud/tracing/customer-service/src/main/java/com/example/demo/Address.java similarity index 100% rename from spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/Address.java rename to spring-cloud/tracing/customer-service/src/main/java/com/example/demo/Address.java diff --git a/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/Controller.java b/spring-cloud/tracing/customer-service/src/main/java/com/example/demo/Controller.java similarity index 95% rename from spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/Controller.java rename to spring-cloud/tracing/customer-service/src/main/java/com/example/demo/Controller.java index f9e350f..32182b5 100644 --- a/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/Controller.java +++ b/spring-cloud/tracing/customer-service/src/main/java/com/example/demo/Controller.java @@ -2,6 +2,7 @@ package com.example.demo; import java.util.Arrays; import java.util.List; +import java.util.Random; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,11 +26,14 @@ public class Controller { Customer customer = new Customer(); customer.setId(customerId); customer.setName(NAMES.get((int) customerId)); - return new ResponseEntity<>(customer, HttpStatus.OK); + + throw new IllegalStateException("BWAAAH!"); + +// return new ResponseEntity<>(customer, HttpStatus.OK); } @GetMapping(path = "addresses/{id}") - public ResponseEntity
getAddress(@PathVariable("id") long customerId) { + public ResponseEntity
getAddress(@PathVariable("id") long customerId) throws InterruptedException { logger.info("GETTING ADDRESS FOR CUSTOMER WITH ID {}", customerId); if (customerId < 0 || customerId > NAMES.size() - 1) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); @@ -37,6 +41,7 @@ public class Controller { Address address = new Address(); address.setId(customerId); address.setStreet(STREETS.get((int) customerId)); + return new ResponseEntity<>(address, HttpStatus.OK); } diff --git a/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/Customer.java b/spring-cloud/tracing/customer-service/src/main/java/com/example/demo/Customer.java similarity index 100% rename from spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/Customer.java rename to spring-cloud/tracing/customer-service/src/main/java/com/example/demo/Customer.java diff --git a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/DemoApplication.java b/spring-cloud/tracing/customer-service/src/main/java/com/example/demo/DemoApplication.java similarity index 76% rename from spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/DemoApplication.java rename to spring-cloud/tracing/customer-service/src/main/java/com/example/demo/DemoApplication.java index dae869f..dd9726c 100644 --- a/spring-cloud/sleuth-downstream-service/src/main/java/com/example/demo/DemoApplication.java +++ b/spring-cloud/tracing/customer-service/src/main/java/com/example/demo/DemoApplication.java @@ -1,11 +1,11 @@ package com.example.demo; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.feign.EnableFeignClients; @SpringBootApplication -@EnableFeignClients +@EnableAutoConfiguration public class DemoApplication { public static void main(String[] args) { diff --git a/spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/ErrorHandler.java b/spring-cloud/tracing/customer-service/src/main/java/com/example/demo/ErrorHandler.java similarity index 100% rename from spring-cloud/sleuth-upstream-service/src/main/java/com/example/demo/ErrorHandler.java rename to spring-cloud/tracing/customer-service/src/main/java/com/example/demo/ErrorHandler.java diff --git a/spring-cloud/tracing/customer-service/src/main/resources/application.yml b/spring-cloud/tracing/customer-service/src/main/resources/application.yml new file mode 100644 index 0000000..7e15351 --- /dev/null +++ b/spring-cloud/tracing/customer-service/src/main/resources/application.yml @@ -0,0 +1,23 @@ +server.port: 8081 + +spring: + output: + ansi: + enabled: always + application: + name: customer-service + + sleuth: + otel: + exporter: + otlp: + endpoint: http://collector:4317 + +management: + endpoint: + beans: + enabled: true + endpoints: + web: + exposure: + include: beans \ No newline at end of file diff --git a/spring-cloud/tracing/customer-service/src/main/resources/logback-spring.xml b/spring-cloud/tracing/customer-service/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..41817ae --- /dev/null +++ b/spring-cloud/tracing/customer-service/src/main/resources/logback-spring.xml @@ -0,0 +1,18 @@ + + + + + + + + + + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} + utf8 + + + + + + + \ No newline at end of file diff --git a/spring-cloud/tracing/customer-service/target/classes/application.yml b/spring-cloud/tracing/customer-service/target/classes/application.yml new file mode 100644 index 0000000..7e15351 --- /dev/null +++ b/spring-cloud/tracing/customer-service/target/classes/application.yml @@ -0,0 +1,23 @@ +server.port: 8081 + +spring: + output: + ansi: + enabled: always + application: + name: customer-service + + sleuth: + otel: + exporter: + otlp: + endpoint: http://collector:4317 + +management: + endpoint: + beans: + enabled: true + endpoints: + web: + exposure: + include: beans \ No newline at end of file diff --git a/spring-cloud/tracing/customer-service/target/classes/com/example/demo/Address.class b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/Address.class new file mode 100644 index 0000000..1801b16 Binary files /dev/null and b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/Address.class differ diff --git a/spring-cloud/tracing/customer-service/target/classes/com/example/demo/Controller.class b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/Controller.class new file mode 100644 index 0000000..fe4609a Binary files /dev/null and b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/Controller.class differ diff --git a/spring-cloud/tracing/customer-service/target/classes/com/example/demo/Customer.class b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/Customer.class new file mode 100644 index 0000000..042b020 Binary files /dev/null and b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/Customer.class differ diff --git a/spring-cloud/tracing/customer-service/target/classes/com/example/demo/DemoApplication.class b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/DemoApplication.class new file mode 100644 index 0000000..1a9fd7b Binary files /dev/null and b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/DemoApplication.class differ diff --git a/spring-cloud/tracing/customer-service/target/classes/com/example/demo/ErrorHandler.class b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/ErrorHandler.class new file mode 100644 index 0000000..f5ca8a5 Binary files /dev/null and b/spring-cloud/tracing/customer-service/target/classes/com/example/demo/ErrorHandler.class differ diff --git a/spring-cloud/tracing/customer-service/target/classes/logback-spring.xml b/spring-cloud/tracing/customer-service/target/classes/logback-spring.xml new file mode 100644 index 0000000..41817ae --- /dev/null +++ b/spring-cloud/tracing/customer-service/target/classes/logback-spring.xml @@ -0,0 +1,18 @@ + + + + + + + + + + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} + utf8 + + + + + + + \ No newline at end of file diff --git a/spring-cloud/tracing/customer-service/target/customer-service-1.0.0-SNAPSHOT.jar b/spring-cloud/tracing/customer-service/target/customer-service-1.0.0-SNAPSHOT.jar new file mode 100644 index 0000000..403de18 Binary files /dev/null and b/spring-cloud/tracing/customer-service/target/customer-service-1.0.0-SNAPSHOT.jar differ diff --git a/spring-cloud/tracing/customer-service/target/customer-service-1.0.0-SNAPSHOT.jar.original b/spring-cloud/tracing/customer-service/target/customer-service-1.0.0-SNAPSHOT.jar.original new file mode 100644 index 0000000..433c4b6 Binary files /dev/null and b/spring-cloud/tracing/customer-service/target/customer-service-1.0.0-SNAPSHOT.jar.original differ diff --git a/spring-cloud/tracing/customer-service/target/maven-archiver/pom.properties b/spring-cloud/tracing/customer-service/target/maven-archiver/pom.properties new file mode 100644 index 0000000..b7c7d4a --- /dev/null +++ b/spring-cloud/tracing/customer-service/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=customer-service +groupId=io.reflectoring +version=1.0.0-SNAPSHOT diff --git a/spring-cloud/tracing/customer-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/spring-cloud/tracing/customer-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..3764109 --- /dev/null +++ b/spring-cloud/tracing/customer-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,5 @@ +com/example/demo/DemoApplication.class +com/example/demo/Address.class +com/example/demo/Customer.class +com/example/demo/ErrorHandler.class +com/example/demo/Controller.class diff --git a/spring-cloud/tracing/customer-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/spring-cloud/tracing/customer-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..c39e53b --- /dev/null +++ b/spring-cloud/tracing/customer-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,5 @@ +/home/tom/IdeaProjects/tracing/customer-service/src/main/java/com/example/demo/Controller.java +/home/tom/IdeaProjects/tracing/customer-service/src/main/java/com/example/demo/ErrorHandler.java +/home/tom/IdeaProjects/tracing/customer-service/src/main/java/com/example/demo/Address.java +/home/tom/IdeaProjects/tracing/customer-service/src/main/java/com/example/demo/DemoApplication.java +/home/tom/IdeaProjects/tracing/customer-service/src/main/java/com/example/demo/Customer.java diff --git a/spring-cloud/tracing/docker-compose.yml b/spring-cloud/tracing/docker-compose.yml new file mode 100644 index 0000000..a655317 --- /dev/null +++ b/spring-cloud/tracing/docker-compose.yml @@ -0,0 +1,32 @@ +version: "3.5" + +services: + + api-service: + build: api-service/ + image: api-service:latest + ports: + - "8080:8080" + + customer-service: + build: ./customer-service/ + image: customer-service:latest + ports: + - "8081:8081" + + collector: + image: logzio/otel-collector-traces + environment: + - LOGZIO_REGION=${LOGZIO_REGION} + - LOGZIO_TRACES_TOKEN=${LOGZIO_TRACES_TOKEN} + ports: + - "1777:1777" + - "9411:9411" + - "9943:9943" + - "6831:6831" + - "6832:6832" + - "14250:14250" + - "14268:14268" + - "4317:4317" + - "55681:55681" + - "8888:8888" diff --git a/spring-cloud/tracing/mvnw b/spring-cloud/tracing/mvnw new file mode 100755 index 0000000..41c0f0c --- /dev/null +++ b/spring-cloud/tracing/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/spring-cloud/tracing/mvnw.cmd b/spring-cloud/tracing/mvnw.cmd new file mode 100644 index 0000000..8611571 --- /dev/null +++ b/spring-cloud/tracing/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/spring-cloud/tracing/pom.xml b/spring-cloud/tracing/pom.xml new file mode 100644 index 0000000..25ba8a5 --- /dev/null +++ b/spring-cloud/tracing/pom.xml @@ -0,0 +1,24 @@ + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.5.6 + + + io.reflectoring.tracing + tracing-parent + pom + 1.0.0-SNAPSHOT + + + + api-service + customer-service + + + \ No newline at end of file