Git Product home page Git Product logo

piomin / sample-spring-microservices-advanced Goto Github PK

View Code? Open in Web Editor NEW
234.0 16.0 133.0 183 KB

More advanced samples of spring boot and spring cloud microservices showing usage of such tools like api Swagger2 on Zuul, integraction with MongoDB, configuration server, testing with Spring Cloud Contract or Hoverfly

Home Page: https://piotrminkowski.com/

Java 100.00%
microservices mongodb spring-boot spring-cloud spring-cloud-config hoverfly spring-cloud-contract testing zuul api-gateway

sample-spring-microservices-advanced's Introduction

Microservices with Spring Cloud Advanced Demo Project Twitter

CircleCI

SonarCloud Bugs Coverage Lines of Code

In this project I'm demonstrating you the most interesting features of Spring Cloud Project for building microservice-based architecture to discuss some additional aspects like API documentation, configuration, testing or storing data.

Getting Started

Currently you may find here some examples of microservices implementation using different projects from Spring Cloud. All the examples are divided into the branches and described in a separated articles on my blog. Here's a full list of available examples:

  1. Using Swagger2 for building API documentation and exposing it for all the microservices on API gateway, which is in that case Netlix Zuul. The example is available in the branch master. Detailed description can be found here: Microservices API Documentation with Swagger2
  2. Using Spring Cloud Contract for consumer-driven contract testing in microservices architecture and embedded Mongo simulating database in component testing. The example is available in the branch testing. A detailed description can be found here: Testing Java Microservices.
  3. Using Hoverfly library for testing APIs and for simulating communication between microservices in component testing. The tests with Hoverfly will include examples with static configuration through IP address and dynamic with Eureka discovery. The example is available in the branch hoverfly. A detailed description can be found here: Testing REST API with Hoverfly.
  4. Using Spring Cloud Config on the client and server side for providing distributed configuration across microservices. These example will discuss some more advanced features. A detailed description can be found here: Microservices Configuration With Spring Cloud Config.

Usage

In the most cases you need to have Maven and JDK8+. The best way to run the sample applications is with IDEs like IntelliJ IDEA or Eclipse. For the some of examples you need to run MongoDB on Docker container, so you also need to have Docker installed on your local machine.

Architecture

Our sample microservices-based system consists of the following modules:

  • gateway-service - a module that Spring Cloud Netflix Zuul for running Spring Boot application that acts as a proxy/gateway in our architecture.
  • config-service - a module that uses Spring Cloud Config Server for running configuration server.
  • discovery-service - a module that depending on the example it uses Spring Cloud Netflix Eureka.
  • account-service - a module containing the first of our sample microservices that allows to perform CRUD operations on MongoDB repository of customer's accounts
  • customer-service - a module containing the second of our sample microservices that allows to perform CRUD operations on MongoDB repository of customers. It communicates with account-service and product-service.
  • product-service - a module containing the third of our sample microservices that allows to perform CRUD operations on MongoDB repository of products.
  • transfer-service - a module containing the fourth of our sample microservices that allows to perform CRUD operations on MongoDB repository making cash transfers between customer accounts. It communicates with both account-service.

The following picture illustrates an approach to a contract and component testing in our sample architecture described above.


The whole sample architecture is visible on the picture below. Each microservice has its own database as shown on the following picture. For simplification in my articles I'm using a single database run on Docker container and multiple collections.

sample-spring-microservices-advanced's People

Contributors

piomin avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sample-spring-microservices-advanced's Issues

Build Error - org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:

I am getting below error while building the code -

[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[WARNING] 'parent.relativePath' of POM pl.piomin:discovery-service:[unknown-version] (C:\MicroServices_Projects\sample-spring-microservices-advanced\discovery-service\pom.xml) points at pl.piomin:sample-spring-microservices-advanced instead of pl.piomin:sample-spring-microservices, please verify your project structure @ line 4, column 10
[FATAL] Non-resolvable parent POM for pl.piomin:discovery-service:[unknown-version]: Could not find artifact pl.piomin:sample-spring-microservices:pom:1.0-SNAPSHOT in public-snapshots (https://globalrepository.mclocal.int/artifactory/public-snapshots) and 'parent.relativePath' points at wrong local POM @ line 4, column 10
 @
[ERROR] The build could not read 1 project -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[WARNING] 'parent.relativePath' of POM pl.piomin:discovery-service:[unknown-version] (C:\MicroServices_Projects\sample-spring-microservices-advanced\discovery-service\pom.xml) points at pl.piomin:sample-spring-microservices-advanced instead of pl.piomin:sample-spring-microservices, please verify your project structure @ line 4, column 10
[FATAL] Non-resolvable parent POM for pl.piomin:discovery-service:[unknown-version]: Could not find artifact pl.piomin:sample-spring-microservices:pom:1.0-SNAPSHOT in public-snapshots (https://globalrepository.mclocal.int/artifactory/public-snapshots) and 'parent.relativePath' points at wrong local POM @ line 4, column 10

    at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:383)
    at org.apache.maven.graph.DefaultGraphBuilder.collectProjects (DefaultGraphBuilder.java:414)
    at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor (DefaultGraphBuilder.java:405)
    at org.apache.maven.graph.DefaultGraphBuilder.build (DefaultGraphBuilder.java:82)
    at org.apache.maven.DefaultMaven.buildGraph (DefaultMaven.java:507)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:219)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[ERROR]
[ERROR]   The project pl.piomin:discovery-service:[unknown-version] (C:\MicroServices_Projects\sample-spring-microservices-advanced\discovery-service\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM for pl.piomin:discovery-service:[unknown-version]: Could not find artifact pl.piomin:sample-spring-microservices:pom:1.0-SNAPSHOT in public-snapshots (https://globalrepository.mclocal.int/artifactory/public-snapshots) and 'parent.relativePath' points at wrong local POM @ line 4, column 10 -> [Help 2]
org.apache.maven.model.resolution.UnresolvableModelException: Could not find artifact pl.piomin:sample-spring-microservices:pom:1.0-SNAPSHOT in public-snapshots (https://globalrepository.mclocal.int/artifactory/public-snapshots)
    at org.apache.maven.project.ProjectModelResolver.resolveModel (ProjectModelResolver.java:197)
    at org.apache.maven.project.ProjectModelResolver.resolveModel (ProjectModelResolver.java:243)
    at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally (DefaultModelBuilder.java:1052)
    at org.apache.maven.model.building.DefaultModelBuilder.readParent (DefaultModelBuilder.java:830)
    at org.apache.maven.model.building.DefaultModelBuilder.build (DefaultModelBuilder.java:332)
    at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:432)
    at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:400)
    at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:518)
    at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:400)
    at org.apache.maven.project.DefaultProjectBuilder.build (DefaultProjectBuilder.java:363)
    at org.apache.maven.graph.DefaultGraphBuilder.collectProjects (DefaultGraphBuilder.java:414)
    at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor (DefaultGraphBuilder.java:405)
    at org.apache.maven.graph.DefaultGraphBuilder.build (DefaultGraphBuilder.java:82)
    at org.apache.maven.DefaultMaven.buildGraph (DefaultMaven.java:507)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:219)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact pl.piomin:sample-spring-microservices:pom:1.0-SNAPSHOT in public-snapshots (https://globalrepository.mclocal.int/artifactory/public-snapshots)

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.


Warning

Renovate failed to look up the following dependencies: Failed to look up docker package sample-spring-microservices-advanced/discovery-service, Failed to look up docker package sample-spring-microservices-advanced/account-service, Failed to look up docker package sample-spring-microservices-advanced/customer-service, Failed to look up docker package sample-spring-microservices-advanced/product-service, Failed to look up docker package sample-spring-microservices-advanced/transfer-service, Failed to look up docker package sample-spring-microservices-advanced/gateway-service, Failed to look up maven package pl.piomin:sample-spring-microservices-advanced.

Files affected: account-service/docker-compose.yml, customer-service/docker-compose.yml, docker-compose.yml, product-service/docker-compose.yml, transfer-service/docker-compose.yml, account-service/pom.xml, customer-service/pom.xml, discovery-service/pom.xml, gateway-service/pom.xml, product-service/pom.xml, transfer-service/pom.xml


This repository currently has no open or pending branches.

Detected dependencies

circleci
.circleci/config.yml
  • cimg/openjdk 21.0.2
docker-compose
account-service/docker-compose.yml
  • mongo 7.0
  • sample-spring-microservices-advanced/discovery-service 1.0-SNAPSHOT
customer-service/docker-compose.yml
  • mongo 7.0
  • sample-spring-microservices-advanced/discovery-service 1.0-SNAPSHOT
  • sample-spring-microservices-advanced/account-service 1.0-SNAPSHOT
docker-compose.yml
  • mongo 7.0
  • sample-spring-microservices-advanced/discovery-service 1.0-SNAPSHOT
  • sample-spring-microservices-advanced/account-service 1.0-SNAPSHOT
  • sample-spring-microservices-advanced/customer-service 1.0-SNAPSHOT
  • sample-spring-microservices-advanced/product-service 1.0-SNAPSHOT
  • sample-spring-microservices-advanced/transfer-service 1.0-SNAPSHOT
  • sample-spring-microservices-advanced/gateway-service 1.0-SNAPSHOT
product-service/docker-compose.yml
  • mongo 7.0
  • sample-spring-microservices-advanced/discovery-service 1.0-SNAPSHOT
  • sample-spring-microservices-advanced/transfer-service 1.0-SNAPSHOT
transfer-service/docker-compose.yml
  • mongo 7.0
  • sample-spring-microservices-advanced/discovery-service 1.0-SNAPSHOT
  • sample-spring-microservices-advanced/account-service 1.0-SNAPSHOT
maven
account-service/pom.xml
  • pl.piomin:sample-spring-microservices-advanced 1.0-SNAPSHOT
  • io.springfox:springfox-swagger2 3.0.0
  • io.springfox:springfox-swagger-ui 3.0.0
  • org.apache.maven:maven-model 3.9.8
  • org.testcontainers:junit-jupiter 1.20.0
  • org.testcontainers:mongodb 1.20.0
  • com.google.cloud.tools:jib-maven-plugin 3.4.3
customer-service/pom.xml
  • pl.piomin:sample-spring-microservices-advanced 1.0-SNAPSHOT
  • io.springfox:springfox-swagger2 3.0.0
  • io.springfox:springfox-swagger-ui 3.0.0
  • org.apache.maven:maven-model 3.9.8
  • org.testcontainers:junit-jupiter 1.20.0
  • org.testcontainers:mongodb 1.20.0
  • io.specto:hoverfly-java-junit5 0.19.0
  • com.google.cloud.tools:jib-maven-plugin 3.4.3
discovery-service/pom.xml
  • pl.piomin:sample-spring-microservices-advanced 1.0-SNAPSHOT
  • com.google.cloud.tools:jib-maven-plugin 3.4.3
gateway-service/pom.xml
  • pl.piomin:sample-spring-microservices-advanced 1.0-SNAPSHOT
  • org.springdoc:springdoc-openapi-starter-webflux-api 2.6.0
  • org.springdoc:springdoc-openapi-starter-webflux-ui 2.6.0
  • com.google.cloud.tools:jib-maven-plugin 3.4.3
pom.xml
  • org.springframework.boot:spring-boot-starter-parent 3.3.2
  • org.springframework.cloud:spring-cloud-dependencies 2023.0.3
product-service/pom.xml
  • pl.piomin:sample-spring-microservices-advanced 1.0-SNAPSHOT
  • io.springfox:springfox-swagger2 3.0.0
  • io.springfox:springfox-swagger-ui 3.0.0
  • org.apache.maven:maven-model 3.9.8
  • org.testcontainers:junit-jupiter 1.20.0
  • org.testcontainers:mongodb 1.20.0
  • com.google.cloud.tools:jib-maven-plugin 3.4.3
transfer-service/pom.xml
  • pl.piomin:sample-spring-microservices-advanced 1.0-SNAPSHOT
  • io.springfox:springfox-swagger2 3.0.0
  • io.springfox:springfox-swagger-ui 3.0.0
  • org.apache.maven:maven-model 3.9.8
  • org.testcontainers:junit-jupiter 1.20.0
  • org.testcontainers:mongodb 1.20.0
  • com.google.cloud.tools:jib-maven-plugin 3.4.3

  • Check this box to trigger a request for Renovate to run again on this repository

Caused by: java.lang.ClassNotFoundException: org.springframework.core.io.support.SpringFactoriesLoader

While building the project I am getting below error

Caused by: org.apache.maven.plugin.PluginContainerException: A required class was missing while executing org.springframework.boot:spring-boot-maven-plugin:1.5.4.RELEASE:repackage: org/springframework/core/io/support/SpringFactoriesLoader
-----------------------------------------------------
realm =    plugin>org.springframework.boot:spring-boot-maven-plugin:1.5.4.RELEASE
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/C:/Users/User/.m2/repository/org/springframework/boot/spring-boot-maven-plugin/1.5.4.RELEASE/spring-boot-maven-plugin-1.5.4.RELEASE.jar
urls[1] = file:/C:/Users/User/.m2/repository/org/springframework/boot/spring-boot-loader-tools/1.5.4.RELEASE/spring-boot-loader-tools-1.5.4.RELEASE.jar
urls[2] = file:/C:/Users/User/.m2/repository/org/springframework/spring-core/4.3.9.RELEASE/spring-core-4.3.9.RELEASE.jar
urls[3] = file:/C:/Users/User/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
urls[4] = file:/C:/Users/User/.m2/repository/org/apache/maven/maven-archiver/2.6/maven-archiver-2.6.jar
urls[5] = file:/C:/Users/User/.m2/repository/org/apache/maven/shared/maven-shared-utils/0.7/maven-shared-utils-0.7.jar
urls[6] = file:/C:/Users/User/.m2/repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar
urls[7] = file:/C:/Users/User/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar
urls[8] = file:/C:/Users/User/.m2/repository/org/eclipse/aether/aether-util/1.0.2.v20150114/aether-util-1.0.2.v20150114.jar
urls[9] = file:/C:/Users/User/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar
urls[10] = file:/C:/Users/User/.m2/repository/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0-no_aop.jar
urls[11] = file:/C:/Users/User/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
urls[12] = file:/C:/Users/User/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.0.0.M5/org.eclipse.sisu.inject-0.0.0.M5.jar
urls[13] = file:/C:/Users/User/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
urls[14] = file:/C:/Users/User/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
urls[15] = file:/C:/Users/User/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
urls[16] = file:/C:/Users/User/.m2/repository/org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.jar
urls[17] = file:/C:/Users/User/.m2/repository/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar
urls[18] = file:/C:/Users/User/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar
urls[19] = file:/C:/Users/User/.m2/repository/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar
urls[20] = file:/C:/Users/User/.m2/repository/com/google/collections/google-collections/1.0/google-collections-1.0.jar
urls[21] = file:/C:/Users/User/.m2/repository/junit/junit/4.12/junit-4.12.jar
urls[22] = file:/C:/Users/User/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
urls[23] = file:/C:/Users/User/.m2/repository/org/codehaus/plexus/plexus-archiver/2.8.1/plexus-archiver-2.8.1.jar
urls[24] = file:/C:/Users/User/.m2/repository/org/codehaus/plexus/plexus-io/2.3.2/plexus-io-2.3.2.jar
urls[25] = file:/C:/Users/User/.m2/repository/org/apache/commons/commons-compress/1.9/commons-compress-1.9.jar
urls[26] = file:/C:/Users/User/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.20/plexus-utils-3.0.20.jar
urls[27] = file:/C:/Users/User/.m2/repository/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar
urls[28] = file:/C:/Users/User/.m2/repository/org/apache/maven/plugins/maven-shade-plugin/2.2/maven-shade-plugin-2.2.jar
urls[29] = file:/C:/Users/User/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
urls[30] = file:/C:/Users/User/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
urls[31] = file:/C:/Users/User/.m2/repository/asm/asm/3.3.1/asm-3.3.1.jar
urls[32] = file:/C:/Users/User/.m2/repository/asm/asm-commons/3.3.1/asm-commons-3.3.1.jar
urls[33] = file:/C:/Users/User/.m2/repository/asm/asm-tree/3.3.1/asm-tree-3.3.1.jar
urls[34] = file:/C:/Users/User/.m2/repository/org/jdom/jdom/1.1/jdom-1.1.jar
urls[35] = file:/C:/Users/User/.m2/repository/org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar
urls[36] = file:/C:/Users/User/.m2/repository/org/vafer/jdependency/0.7/jdependency-0.7.jar
urls[37] = file:/C:/Users/User/.m2/repository/commons-io/commons-io/1.3.2/commons-io-1.3.2.jar
urls[38] = file:/C:/Users/User/.m2/repository/asm/asm-analysis/3.2/asm-analysis-3.2.jar
urls[39] = file:/C:/Users/User/.m2/repository/asm/asm-util/3.2/asm-util-3.2.jar
urls[40] = file:/C:/Users/User/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar
Number of foreign imports: 1
import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

-----------------------------------------------------

    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:169)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/io/support/SpringFactoriesLoader
    at org.springframework.boot.loader.tools.Repackager.getLayoutFactory (Repackager.java:208)
    at org.springframework.boot.loader.tools.Repackager.repackage (Repackager.java:174)
    at org.springframework.boot.maven.RepackageMojo.repackage (RepackageMojo.java:212)
    at org.springframework.boot.maven.RepackageMojo.execute (RepackageMojo.java:199)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.io.support.SpringFactoriesLoader
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass (SelfFirstStrategy.java:50)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass (ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:247)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:239)
    at org.springframework.boot.loader.tools.Repackager.getLayoutFactory (Repackager.java:208)
    at org.springframework.boot.loader.tools.Repackager.repackage (Repackager.java:174)
    at org.springframework.boot.maven.RepackageMojo.repackage (RepackageMojo.java:212)
    at org.springframework.boot.maven.RepackageMojo.execute (RepackageMojo.java:199)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :account-service

Add authorization header to aggregated swagger

I have created gateway proxy using Zuul. It redirects the traffic to Service1 and Service2

public class SwaggerAggregatorController implements SwaggerResourcesProvider {
    @Override
    public List<SwaggerResource> get() {
        List<SwaggerResource> resources= new ArrayList<>();

        SwaggerResource custSwagger = new SwaggerResource();
        custSwagger.setName("cust");
        custSwagger.setLocation("/cust/cust-service/v2/api-docs");
        custSwagger.setSwaggerVersion("2.0");
        resources.add(custSwagger);

        return resources;
    }
}

I'm getting the swagger documents as expected.

What extra I need is, ability to pass the authorization header via swagger as Authorization: bearer: <token>. This token would be verified on Gateway and if the right token then pass the request to service without the token.

What can I do to achieve this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.