MCPcopy Index your code
hub / github.com/apache/servicecomb-java-chassis

github.com/apache/servicecomb-java-chassis @3.3.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 3.3.0 ↗ · + Follow
16,875 symbols 59,982 edges 2,607 files 548 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Java Chassis 中文 Maven Central License

Apache ServiceComb Java Chassis is a Software Development Kit (SDK) for rapid development of microservices in Java, providing service registration, service discovery, dynamic routing, and service management features.

If you find this project helpful, please don't forget to star it.

releases

Release Train Latest Version Compiled JDK Version Tested JDK Version Open API Notes
Java Chassis 3 3.2.6 OpenJDK 17 OpenJDK 17 3.0.x Depends on Spring Boot 3
Java Chassis 2 2.8.24 OpenJDK 8 OpenJDK 8, 11, 17 2.0.x Depends on Spring 5
Java Chassis 1 1.3.11 OpenJDK 8 OpenJDK 8 2.0.x End of Support

Java Chassis core dependencies

Java Chassis Spring Boot Vert.x Swagger Jackson
3.2.x 3.3.x 4.5.x 2.2.x 2.18.x

NOTICE: Since Open API 3.0.x is not compatible with 2.0.x, Java Chassis 2 and Java Chassis 1 can not work together with Java Chassis 3. All related consumers, providers and edge service need use Java Chassis 3 when upgrading.

NOTICE: Java Chassis 1 reached its end of support now after it's first release from 2018.

Quick Start

  • Define API
@RequestMapping(path = "/provider")
public interface ProviderService {
  @GetMapping("/sayHello")
  String sayHello(@RequestParam("name") String name);
}
  • Provider service
@RestSchema(schemaId = "ProviderController", schemaInterface = ProviderService.class)
public class ProviderController implements ProviderService {
  @Override
  public String sayHello(String name) {
    return "Hello " + name;
  }
}
  • Consumer service
@Configuration
public class ProviderServiceConfiguration {
  @Bean
  public ProviderService providerService() {
    return Invoker.createProxy("provider", "ProviderController", ProviderService.class);
  }
}

Invoke Provider service with RPC

@RestSchema(schemaId = "ConsumerController", schemaInterface = ConsumerService.class)
public class ConsumerController implements ConsumerService {
  private ProviderService providerService;

  @Autowired
  public void setProviderService(ProviderService providerService) {
    this.providerService = providerService;
  }

  @Override
  public String sayHello(String name) {
    return providerService.sayHello(name);
  }
}

Try out this example here .

Documentation

Project documentation is available on the ServiceComb Java Chassis Developer Guide.

Building

You don’t need to build from source to use Java Chassis (binaries in apache nexus ), but if you want to try out the latest and greatest, Java Chassis can be easily built with the maven. You also need JDK 17.

  mvn clean install

The first build may take a longer than expected as Maven downloads all the dependencies.

Automated Testing

To build the docker image and run the integration tests with docker, you can use maven docker profile

  mvn clean install -Pdocker -Pit

If you are using docker machine, please use the following command

  mvn clean install -Pdocker -Pit -Pdocker-machine

Contact

Bugs: issues

mailing list: subscribe dev

Contributing

See CONTRIBUTING for details on submitting patches and the contribution workflow.

License

Licensed under an Apache 2.0 license.

Extension points exported contracts — how you extend this code

OpenAPIRegistry (Interface)
Register and load OpenAPI extensions. [6 implementers]
core/src/main/java/org/apache/servicecomb/core/provider/OpenAPIRegistry.java
RegistrationInstance (Interface)
Microserivce instance registration object. [7 implementers]
foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/RegistrationInstance.java
TcpBufferHandler (Interface)
TcpBufferHandler [13 implementers]
foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/server/TcpBufferHandler.java
DynamicPropertiesSource (Interface)
SPI to add new DynamicPropertiesSource. [158 implementers]
foundations/foundation-config/src/main/java/org/apache/servicecomb/config/DynamicPropertiesSource.java
HttpClientRequestFactory (Interface)
some service has special domain name rule, eg: k8s assume k8s domain name is https://k8s.com:1234, and clusterId is [150 …
transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/HttpClientRequestFactory.java
SpringmvcAddV2 (Interface)
(no doc) [35 implementers]
swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/schemas/SpringmvcAddV2.java
MethodAnnotationProcessor (Interface)
(no doc) [40 implementers]
swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/MethodAnnotationProcessor.java
InvocationAware (Interface)
(no doc) [10 implementers]
handlers/handler-tracing-zipkin/src/main/java/org/apache/servicecomb/tracing/zipkin/InvocationAware.java

Core symbols most depended-on inside this repo

put
called by 1196
clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransport.java
get
called by 715
foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/Getter.java
add
called by 600
demo/demo-schema/src/main/java/org/apache/servicecomb/demo/compute/Compute.java
get
called by 504
clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransport.java
isEmpty
called by 437
foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/cache/VersionedCache.java
get
called by 401
swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/utils/methodUtilsModel/BaseInterface.java
getValue
called by 276
common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/ParamValueProcessor.java
error
called by 214
core/src/main/java/org/apache/servicecomb/core/tracing/TraceIdLogger.java

Shape

Method 13,827
Class 2,679
Interface 337
Enum 32

Languages

Java100%

Modules by API surface

foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/Root.java135 symbols
foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/AbstractHttpServletRequest.java69 symbols
foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestAbstractHttpServletRequest.java66 symbols
demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java59 symbols
core/src/main/java/org/apache/servicecomb/core/Invocation.java59 symbols
foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/PrimitiveWrapperArrays.java57 symbols
foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/model/PrimitiveArrays.java57 symbols
foundations/foundation-protobuf/src/main/java/io/protostuff/ProtobufOutputEx.java57 symbols
core/src/main/java/org/apache/servicecomb/core/SCBEngine.java55 symbols
foundations/foundation-protobuf/src/main/java/io/protostuff/OutputEx.java50 symbols
foundations/foundation-protobuf/src/main/java/io/protostuff/ByteArrayInputEx.java48 symbols
core/src/main/java/org/apache/servicecomb/core/invocation/InvocationStageTrace.java48 symbols

Datastores touched

ptDatabase · 1 repos

For agents

$ claude mcp add servicecomb-java-chassis \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact