1 of 89

Eclipse MicroProfile 3.3

18th February 2020

1

Eclipse MicroProfile Community

2 of 89

What is Eclipse MicroProfile?

  • Eclipse MicroProfile is an open-source community specification for Enterprise Java microservices
  • A community of individuals, organizations, and vendors collaborating within an open source (Eclipse) project to bring microservices to the Enterprise Java community

2

3 of 89

Community - individuals, organizations, vendors

3

4 of 89

Current MicroProfile implementations

4

5 of 89

Eclipse MicroProfile 3.3 Released!

On February 18, 2020, MicroProfile 3.3 was released. Offered in the release:

  • Continued alignment with CDI, JSON-P, JSON-B, and JAX-RS
  • A richer feature set for Rest Client, Config, Fault Tolerance, Metrics and Health specifications
  • CDI-based and programmatic interfaces
  • Test Compatibility Kit (TCK), Javadoc, HTML, PDF docs for download

Other news:

6 of 89

Eclipse MicroProfile 3.3 (Feb 2020)

6

MicroProfile 3.3

JAX-RS 2.1

JSON-P 1.1

CDI 2.0

Config 1.4

Fault�Tolerance 2.1

JWT�Propagation 1.1

Health 2.2

Metrics 2.3

Open Tracing 1.3

Open API 1.1

= Updated

= No change from last release (MicroProfile 3.2)

= New

Rest Client 1.4

JSON-B 1.0

Standalone

Context Propagation 1.0

Reactive Streams Operators 1.0

Outside umbrella

Reactive Messaging 1.0

GraphQL 1.0

7 of 89

Rest Client 1.4 - Updates

  • Ensure CDI and optionally JAX-RS injection into ClientHeadersFactory.
  • Specified @Target to @RestClient annotation.
  • Removed recursive classloader check when resolving service loader for Rest Client SPI.
  • Updated ParamConverter TCK test case to be more realistic (converting String-to-Widget rather than String-to-String).
  • Fixed Javadoc warnings.

7

8 of 89

Config 1.4 - Updates

API/SPI Changes

  • Prevent incorrect caching of ConfigProviderResolver
  • ConfigProviderResolver classloading issues
  • Converter extends Serializable

Spec Changes

  • Change the priority of implicit converters
  • Clarify if @ConfigProperty injected values are bean passivating enabled
  • Add built-in converters for byte, short and char

Other Changes

  • Exclude EL api transitive dependency
  • Other minor spec wording or JavaDoc updates

8

9 of 89

Fault Tolerance 2.1 - Updates

API/SPI Changes

  • The Retry.retryOn and abortOn attributes no longer ignore Throwable.class
  • Added CircuitBreaker.skipOn
  • Added Fallback.applyOn and skipOn

Functional Changes

  • Specified the meaning of overlapping Retry.retryOn and abortOn
  • Relaxed the requirements on Future and CompletionStage implementations

Specification Changes

  • Specified that throwing custom throwables is non-portable
  • Specified that the CDI request context must be active during the execution of methods annotated with Asynchronous
  • Clarified that when when a method returning CompletionStage is annotated with both Bulkhead and Asynchronous, the bulkhead considers the method to be executing until the CompletionStage returned by the method completes.
  • Clarified the retry metrics specification

Other changes

  • Time values in TCK tests are now configurable
  • Transitive dependency on javax.el-api has been excluded

9

10 of 89

Metrics 2.3 - Updates

API/SPI Changes

  • Introduced the simple timer (@SimplyTimed) metric
  • Added withOptional* methods to the MetadataBuilder, they don’t fail when null values are passed to them
  • Added the MetricID.getTagsAsArray() method to the API
  • Added the method MetricType.fromClassName

Functional Changes

  • Introduced a new base metric derived from RESTful stats into the base scope.
    • REST.request : Tracks the total count of requests and total elapsed time spent at the REST endpoint
  • Introduced the simple timer (@SimplyTimed) metric
  • The API code no longer requires a correctly configured MP Config implementation to be available at runtime, so it is possible to slim down deployments if MP Config is not necessary

Specification Changes

  • Added ProcessCpuTime as a new optional base metric

TCK enhancement

  • Improved TCK - Use WebArchive for deployment

10

11 of 89

Health 2.2 - Updates

API/SPI Changes

  • Add Annotation literals for all Qualifier in spec to ease programmatic lookup.
  • Make HealthCheckResponse a concrete class to allow its usage on consuming end.

Miscellaneous

  • Update version of CDI API to 2.0.
  • Remove Guava exclusion since it’s required to run TCK.

11

12 of 89

Eclipse MicroProfile 3.3 - release content

12

- Project page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Project page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

13 of 89

MicroProfile Reactive Capabilities

MicroProfile Reactive Streams Operators

A set of operators to create new reactive streams, process the transiting data and consume them with ease

MicroProfile Reactive Messaging

Defines a development model for declaring CDI beans producing, consuming and processing messages. It relies on Reactive Streams Operators and CDI

MicroProfile Context Propagation

APIs for propagating contexts across units of work that are thread-agnostic

13

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

Check it out and send us your feedback!

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

14 of 89

  • MP Starter 1.0 GA’ed
  • Quarkus runtime added
  • Java SE Version added

14

15 of 89

Roadmap / Futures

15

16 of 89

Roadmap items

  • Long Running Actions
  • GraphQL
  • Boost - MicroProfile maven plugin sandbox project
  • Reactive Relational Database Access
  • Event Data
  • Service meshes

16

17 of 89

Get Involved!

17

18 of 89

Eclipse MicroProfile

18

19 of 89

Backup

19

20 of 89

Eclipse MicroProfile 3.2 Released!

On November 4, 2019, MicroProfile 3.2 was released. Offered in the release:

  • Java EE 8 continued alignment
  • A richer feature set for Metrics and Health Check specifications
  • CDI-based and programmatic interfaces
  • Test Compatibility Kit (TCK), Javadoc, PDF doc for download

Other news:

21 of 89

Eclipse MicroProfile 3.2 (Nov 2019)

21

MicroProfile 3.2

JAX-RS 2.1

JSON-P 1.1

CDI 2.0

Config 1.3

Fault�Tolerance 2.0

JWT�Propagation 1.1

Health 2.1

Metrics 2.2

Open Tracing 1.3

Open API 1.1

= Updated

= No change from last release (MicroProfile 3.1)

= New

Rest Client 1.3

JSON-B 1.0

Standalone

Context Propagation 1.0

Reactive Streams Operators 1.0

Outside umbrella

Reactive Messaging 1.0

22 of 89

Metrics 2.2 - Updates

Highlight of update:

  • Reverted a problematic change from Metrics 2.1 where Gauges were required to return subclasses of java.lang.Number

22

23 of 89

Health 2.1 - Updates

Highlight of updates:

  • API/SPI changes:
    • Add new method to create responses
    • Add config property to disable implementation Health Check procedures
    • Improve javadoc
  • TCK enhancements:
    • Testing JSON format
    • Add delayed test
    • Add test name before each tests
  • Miscellaneous:
    • Remove duplicate Arquillian import
    • Remove EL API transitive dependency

23

24 of 89

Eclipse MicroProfile 3.2 - release content

24

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

25 of 89

MicroProfile Reactive Capabilities

MicroProfile Reactive Streams Operators

A set of operators to create new reactive streams, process the transiting data and consume them with ease

MicroProfile Reactive Messaging

Defines a development model for declaring CDI beans producing, consuming and processing messages. It relies on Reactive Streams Operators and CDI

MicroProfile Context Propagation

APIs for propagating contexts across units of work that are thread-agnostic

25

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

Check it out and send us your feedback!

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

26 of 89

  • Command-line Interface released
  • Visual Studio Code extension released

26

27 of 89

Eclipse MicroProfile 3.1 Released!

On October 9, 2019, MicroProfile 3.1 was released. Offered in the release:

  • Java EE 8 continued alignment
  • A richer feature set for Metrics and Health Check specifications
  • CDI-based and programmatic interfaces
  • Test Compatibility Kit (TCK), Javadoc, PDF doc for download

Other news:

28 of 89

Eclipse MicroProfile 3.1 (Oct 2019)

28

MicroProfile 3.1

JAX-RS 2.1

JSON-P 1.1

CDI 2.0

Config 1.3

Fault�Tolerance 2.0

JWT�Propagation 1.1

Health 2.1

Metrics 2.1

Open Tracing 1.3

Open API 1.1

= Updated

= No change from last release (MicroProfile 3.0)

= New

Rest Client 1.3

JSON-B 1.0

Standalone

Context Propagation 1.0

Reactive Streams Operators 1.0

Outside umbrella

Reactive Messaging 1.0

29 of 89

Metrics 2.1 - Updates

Highlight of updates:

  • Clarified that metric registry implementations are required to be thread-safe.
  • Clarified that Gauges must return values that extend java.lang.Number.
  • Clarified that implementations can omit metrics, or can be present with empty value.
  • Clarified that metrics should not be created for private methods in an annotated class.
  • TCKs are updated to use RestAssured 4.0
  • Added the reusable(boolean) method for MetadataBuilder
  • Explicitly excluded the transitive dependency on javax.el-api from the spec build.
  • Added some text to the specification about programmatic creation of metrics (without annotations)

29

30 of 89

Health 2.1 - Updates

Highlight of updates:

  • API/SPI changes:
    • Add new method to create responses
    • Add config property to disable implementation Health Check procedures
    • Improve javadoc
  • TCK enhancements:
    • Testing JSON format
    • Add delayed test
    • Add test name before each tests
  • Miscellaneous:
    • Remove duplicate Arquillian import
    • Remove EL API transitive dependency

30

31 of 89

Eclipse MicroProfile 3.1 - release content

31

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

32 of 89

MicroProfile Reactive Capabilities

MicroProfile Reactive Streams Operators

A set of operators to create new reactive streams, process the transiting data and consume them with ease

MicroProfile Reactive Messaging

Defines a development model for declaring CDI beans producing, consuming and processing messages. It relies on Reactive Streams Operators and CDI

MicroProfile Context Propagation

APIs for propagating contexts across units of work that are thread-agnostic

32

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

Check it out and send us your feedback!

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

33 of 89

  • Command-line Interface released
  • Visual Studio Code extension released

33

34 of 89

Eclipse MicroProfile 3.0 Released!

On June 11, 2019, MicroProfile 3.0 was released. Offered in the release:

  • Java EE 8 continued alignment
  • A richer feature set for Rest Client, Metrics, and Health Check
  • Metrics and Health Check have introduced breaking API changes
  • CDI-based and programmatic interfaces
  • Test Compatibility Kit (TCK), Javadoc, PDF doc for download

Other news:

  • Boost project has been added to the MicroProfile sandbox
  • start.microprofile.io planning to release command-line interface

35 of 89

Eclipse MicroProfile 3.0 (Jun 2019)

35

MicroProfile 3.0

JAX-RS 2.1

JSON-P 1.1

CDI 2.0

Config 1.3

Fault�Tolerance 2.0

JWT�Propagation 1.1

Health�Check 2.0

Metrics 2.0

Open Tracing 1.3

Open API 1.1

= Updated

= No change from last release (MicroProfile 2.2)

= New

Rest Client 1.3

JSON-B 1.0

36 of 89

Health Check 2.0 - Updates

Updates:

  • Message body of Health check response was modified, outcome and state were replaced by status [Breaking API Change]
  • Deprecation of @Health annotation (but still usable in Health Check 2.0)
  • Introduction of Health checks for @Liveness and @Readiness on /health/ready and /health/live endpoints
  • TCK enhancement and cleanup
  • JSON schema fixed and enhanced
  • Enhance examples in spec (introduce Health check procedures producers)
  • Document that Health check procedures are not called in predictable order

36

37 of 89

Metrics 2.0 - Updates

Highlight of updates:

  • Refactoring of Counters [Breaking API Change]
    • Counters via @Counted are now always monotonic, the monotonic attribute is gone
    • Former non-monotonic counters are now @ConcurrentGauge and also in the output reported as gauges
  • Removed unnecessary annotations and deprecated methods
  • Metrics are now uniquely identified by a MetricID
  • OpenMetrics format - formerly called Prometheus format
  • Some base metric names have changed to follow the convention of ending the name of accumulating counters with total
  • Some base metric types have changed from Counter to Gauge since Counters must now count monotonically

37

38 of 89

Rest Client 1.3 - Updates

Updates:

  • Simpler configuration using configKeys - allowing multiple client interfaces to be configured with the same configuration settings.
  • SSL configuration support.
  • Allow client proxies to be cast to Closeable/AutoCloseable, enabling resources to be cleaned up after use.
  • Defined application/json to be the default MediaType if none is specified in @Produces/@Consumes

38

39 of 89

Eclipse MicroProfile 3.0 - release content

39

- Project page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

40 of 89

  • Command-line Interface
    • Soon to be released
    • CLI will be used for the creation of major IDE extensions

40

41 of 89

Eclipse MicroProfile 2.2 Released!

On February 12, 2019, MicroProfile 2.2 was released. Offered in the release:

  • Java EE 8 continued alignment
  • A richer feature set for Fault Tolerance, Open Tracing, Open API, and Rest Client
  • CDI-based and programmatic interfaces
  • Test Compatibility Kit (TCK), Javadoc, PDF doc for download

Other news:

42 of 89

Eclipse MicroProfile 2.2 (Feb 2019)

42

MicroProfile 2.2

JAX-RS 2.1

JSON-P 1.1

CDI 2.0

Config 1.3

Fault�Tolerance 2.0

JWT�Propagation 1.1

Health�Check 1.0

Metrics 1.1

Open Tracing 1.3

Open API 1.1

= Updated

= No change from last release (MicroProfile 2.1)

= New

Rest Client 1.2

JSON-B 1.0

43 of 89

Open Tracing 1.3 - Updates

Updates from 1.3:

  • Instrument MicroProfile Rest Client 1.2
  • Clarify http-path when path contains regular expressions

Updates from 1.2.1:

  • Split tree equals in TCK and remove logs from server spans
  • Remove servlets from TCK and use context root to test MP Metrics, OpenAPI, Health URLs
  • Clarified default skip pattern value
  • Added HTTP method to http-path operation name
  • Added tests for ClientTracingRegistrar
  • Update metadata in pom.xml
  • Renamed test class to match OpenTracing

43

44 of 89

Open API 1.1 - Updates

Updates for 1.1.1:

  • Corrected TCK tests that were expecting wrong behavior

Updates for 1.1:

  • Addition of the JAX-RS 2.1 PATCH method
  • Automatic hide MicroProfile Rest Client interfaces
  • OASFactoryResolver is now a proper SPI artifact
  • Builder methods now have default implementations
  • @Content now supports a singular example field
  • @Extension now has a parseValue field for complex values
  • TCK updated to support newer 3.0.x versions
  • Overall Javadoc enhancements (classes and packages)

44

45 of 89

Rest Client 1.2 - Updates

Updates:

  • Generate headers en masse, including propagation of headers from inbound JAX-RS requests.
  • New @ClientHeaderParam API for defining HTTP headers without modifying the client interface method signature.
  • New section documenting the Integration with other MicroProfile technologies.
  • Clarification on built-in JSON-B/JSON-P entity providers.
  • New connectTimeout and readTimeout methods on RestClientBuilder - and corresponding MicroProfile Config properties.
  • ClientRequestContext should have a property named org.eclipse.microprofile.rest.client.invokedMethod containing the Rest Client Method currently being invoked.
  • New SPI interface, RestClientListener interface for intercepting new client instances.
  • New removeContext method for AsyncInvocationInterceptor interface.

45

46 of 89

Fault Tolerance 2.0 - Updates

Major version update to 2.0 due to moving up to CDI 2.0 (Java EE 8). This spec is no longer compatible with Java EE 7. Updates:

  • API/SPI changes:
    • Add support of the CompletionStage return type when annotated with @Asynchronous
  • Functional changes:
    • Specify the invocation sequence of MicroProfile Fault Tolerance annotations when used together
    • Clarify how the Fault Tolerance annotations interact with other application defined interceptors
  • Spec changes:
    • Clarify whether other Fault Tolerance functionalities will be triggered on an exceptional returned Future.
    • Specify the sequence of MicroProfile Fault Tolerance annotations when used together.
    • Clarify how the Fault Tolerance annotations interact with other application defined interceptor
  • Other:
    • Clarify failOn() on CircuitBreaker and Fallback.
    • Circuit Breaker - clarify how requestVolumeThreshold() and rolling window work

46

47 of 89

Eclipse MicroProfile 2.2 - release content

47

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Project page

- Spec PDF doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Project page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

48 of 89

Stand-alone releases - outside platform

  • Reactive Streams Operators 1.0 project was released standalone (outside the Eclipse MicroProfile 2.2 platform release) on January 17, 2019
  • Reactive Streams has become the lingua-franca in terms of reactive. However, Reactive Streams is a low-level API, which does not define how to create, process and consume streams; and implementing a reactive stream can be a major burden. MicroProfile Reactive Streams Operators propose a set of operators to fill this gap so that you can create new reactive streams, process the transiting data and consume them with ease.

48

- Project page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

49 of 89

Other news in this release window

49

50 of 89

Roadmap - releases outside platform

  • MicroProfile GraphQL sandbox repository approved on January 22, 2019
  • MicroProfile Health Check 2.0 is planning to release stand-alone outside the Eclipse MicroProfile 2.2 platform release.
  • MicroProfile Metrics 2.0 is also planning to release stand-alone outside the Eclipse MicroProfile 2.2 platform release.

50

51 of 89

Eclipse MicroProfile 2.1 (Oct, 2018)

51

MicroProfile 2.1

JAX-RS 2.1

JSON-P 1.1

CDI 2.0

Config 1.3

Fault�Tolerance 1.1

JWT�Propagation 1.1

Health�Check 1.0

Metrics 1.1

Open Tracing 1.2

Open API 1.0

= Updated

= No change from last release (MicroProfile 2.0)

= New

Rest Client 1.1

JSON-B 1.0

52 of 89

Open Tracing 1.2 - Updates

Updates:

  • By default, Open Tracing will not trace endpoints associated with MicroProfile Metrics, Health and OpenAPI
  • Added logging exceptions thrown by explicit instrumentation (@Traced)
  • Added server operation name provider
  • Removed geronimo-atinject and javax.annotation dependencies for API module
  • Added support for server side skip pattern

52

53 of 89

Eclipse MicroProfile 2.1 - release content

53

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

54 of 89

Eclipse MicroProfile 2.1 Released!

On October 19, 2018, MicroProfile 2.1 was released. Offered in the release:

  • Java EE 8 continued alignment
  • A richer feature set for Open Tracing
  • CDI-based and programmatic interfaces
  • Test Compatibility Kit (TCK), Javadoc, PDF doc for download

Other news:

  • Reactive Streams Operators project plans to release standalone
  • MicroProfile is moving to 3 releases per year (~Feb 1, ~Jun 1, and ~Oct 1)
  • MicroProfile.io now supports WordPress
  • C-level/ITDM white paper

55 of 89

Eclipse MicroProfile 2.0 (Jun, 2018)

55

MicroProfile 2.0

JAX-RS 2.1

JSON-P 1.1

CDI 2.0

Config 1.3

Fault�Tolerance 1.1

JWT�Propagation 1.1

Health�Check 1.0

Metrics 1.1

Open Tracing 1.1

Open API 1.0

= Updated

= No change from last release (MicroProfile 1.4)

= New

Rest Client 1.1

JSON-B 1.0

56 of 89

Eclipse MicroProfile 2.0 - release content

  • Eclipse MicroProfile 1.4
  • Alignment of Java EE related APIs to Java EE 8 release:
    • Updated CDI, JSON-P, JAX-RS, and added JSON-B
  • Eclipse MicroProfile 2.0 Specification PDF document

56

57 of 89

Eclipse MicroProfile 1.4 (Jun, 2018)

57

MicroProfile 1.4

JAX-RS 2.0

JSON-P 1.0

CDI 1.2

Config 1.3

Fault�Tolerance 1.1

JWT�Propagation 1.1

Health�Check 1.0

Metrics 1.1

Open Tracing 1.1

Open API 1.0

= Updated

= No change from last release

= New

Rest Client 1.1

58 of 89

Configuration 1.3 - Updates

Functional Changes

  • The implicit (common sense) converters have been improved and some of the built-in converters are removed from the spec as they are covered by implicit converters. The method invocation sequence on implicit converters are further improved (#325).
  • Implementations must also support the mapping of a config property to the corresponding environment variable (#264)

Specification Changes

  • Specification changes to document (#348), (#325), (#264)

Other Changes

  • More TCK tests were added:
    1. Assert URI will be converted (#322)
    2. Testing injecting an Optional<String> that has no config value (#336).
    3. Built-in converters are automatically added to the injected config ((#348)
  • Java 2 security related change (#343)

58

59 of 89

JWT Propagation 1.1 - Updates

The focus of this release was to add support for configuring the public key and issuer needed for verification of the MP-JWT using MicroProfile Config. The new MicroProfile Config properties are:

  • mp.jwt.verify.publickey : The embedded key material of the public key for the MP-JWT signer in PKCS8 PEM or JWK(S) format. If not found the mp.jwt.verify.publickey.location needs to be checked.
  • mp.jwt.verify.publickey.location : The relative path or full URL of the public key. All relative paths will be resolved within the archive using ClassLoader.getResource. If the value is a URL it will be resolved using new URL(“...”).openStream()
  • mp.jwt.verify.issuer : The expected iss claim value to validate against an MP-JWT.

59

60 of 89

Fault Tolerance 1.1 - Updates

  • Disable individual annotations via Config
  • Update ExecutionContext SPI to add one more method getFailure()
  • Interaction with MP Metrics

60

61 of 89

Open Tracing 1.1 - Updates

New features:

  • Added component tag jaxrs to server and client spans
  • Changed tracing for clients so that it now needs to be explicitly enabled
  • Updated dependency version of opentracing-api to 0.31.0

61

62 of 89

Rest Client 1.1 - Updates

Key features:

  • Asynchronous Methods - to use, just update the return type of your Rest Client methods to be CompletionStage.
  • RestClientBuilderListener - now products can plug in and register providers, update config properties, etc. prior to the creation of new client instances. This enables other MicroProfile technologies, like Open Tracing to automatically add their client request/response filters to MP Rest Clients.
  • Supports java.net.URI in addition to java.net.URL.
  • @RegisterRestClient is now a bean-defining annotation - no longer need to add @Dependent annotation to the client interface.

62

63 of 89

Eclipse MicroProfile 1.4 - release content

63

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

64 of 89

Eclipse MicroProfile 1.3 (Jan, 2018)

64

MicroProfile 1.3

JAX-RS 2.0

JSON-P 1.0

CDI 1.2

Config 1.2

Fault�Tolerance 1.0

JWT�Propagation 1.0

Health�Check 1.0

Metrics 1.1

Open Tracing 1.0

Open API 1.0

= Updated

= No change from last release

= New

Rest Client 1.0

65 of 89

Configuration 1.2 - Updates

New features:

  • The ConfigBuilder SPI has been extended with a method that allows for a converter with the specified class type to be registered. This change removes the limitation, which was unable to add a lambda converter, from the previous releases.
  • Implementations must now support the array converter. For the array converter, the programmatic lookup of a property (e.g. config.getValue(myProp, String[].class)) must support the return type of the array. For the injection lookup, an Array, List or Set must be supported as well (e.g. @Inject @ConfigProperty(name="myProp") private List<String> propValue;).
  • Implementations must also support the common sense converters where there is no corresponding type of converters provided for a given class. The implementation must use the class’s constructor with a single string parameter, then try valueOf(String) followed by parse(CharSequence).
  • Implementations must also support Class converter

65

66 of 89

Metrics 1.1 - Updates

New features:

  • Improved TCK.
  • org.eclipse.microprofile.metrics.MetricRegistry.register(String name, Metric, Metadata) is deprecated.
  • Use org.eclipse.microprofile.metrics.MetricRegistry.register(Metadata, Metric) instead, where Metadata already has a field for the name.
  • Global tags are now supplied via the means of MicroProfile Config (the env variable is still valid).
  • Annotations and Metadata can now have a flag reusable that indicates that the metric name can be registered more than once. Default is false as in Metrics

66

67 of 89

OpenAPI

Management of microservices in an MSA can become unwieldy as the number of microservices increases. Microservices can be managed via their APIs. Management, security, load balancing, and throttling are policies that can be applied to APIs fronting microservices. OpenAPI provides Java interfaces and programming models which allow Java developers to natively produce OpenAPI v3 documents from their JAX-RS applications.

67

68 of 89

OpenAPI 1.0

  • Enterprise Java Binding of the OpenAPI v3 specification�
  • Based on Swagger Core
  • OpenAPI
    • Defines a standard, programming language-agnostic interface description for REST APIs
    • Understandable by humans and machines

68

69 of 89

OpenTracing

Tracing the flow of a request in a distributed environment has always been challenging but it is even more complex in a microservices architecture, where requests traverse across not just architectural tiers but also multiple services. The MicroProfile OpenTracing API provides a standard for instrumenting microservices for distributed tracing.

69

70 of 89

OpenTracing 1.0

  • Enterprise Java Binding to OpenTracing specification�
  • Defines behaviors and an API for accessing an OpenTracing compliant Tracer object within your application
  • Behaviors specify how incoming and outgoing requests will have OpenTracing Spans automatically created

70

71 of 89

REST Client

In the Microservices world, we typically talk REST to other services. While the JAX-RS specification defines a fluent API for making calls, it is difficult to make it a true type safe client. Several JAX-RS implementations support the ability to take an interface definition and create a JAX-RS client from it (JBoss RestEasy, Apache CXF) as well as being supported by a number of service providers (Wildfly Swarm, OpenFeign). MicroProfile Rest Client API provides a type-safe approach to invoke RESTful services over HTTP in a consistent and easy-to-reuse fashion.

71

72 of 89

Rest Client 1.0

  • A type-safe approach to invoke RESTful services over HTTP�
  • More natural coding style�
  • Handles HTTP connectivity and serialization

72

String apiUrl = "http://localhost:9080/movieReviewService";�MovieReviewService reviewSvc = � RestClientBuilder.newBuilder()� .baseUrl(apiUrl)� .build(MovieReviewService.class);��Review review = new Review(3 /*stars*/,"Good Movie.");��reviewSvc.submitReview( movieId, review );

73 of 89

Eclipse MicroProfile 1.3 - release content

73

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Javadocs

- Technology Compatibility Kit (TCK)

74 of 89

Eclipse MicroProfile 1.2 (Sep, 2017)

74

MicroProfile 1.2

= Updated

= No change from last release

JAX-RS 2.0

JSON-P 1.0

CDI 1.2

Config 1.1

Fault�Tolerance 1.0

JWT�Propagation 1.0

Health�Check 1.0

Metrics 1.0

= New

75 of 89

Configuration 1.1 - Updates

  • API/SPI Changes
    1. The ConfigSource SPI has been extended with a default method that returns the property names for a given ConfigSource
  • Functional Changes
    • Implementations must now include a URL Converter, of @Priority(1)
    • The format of the default property name for an injection point using @ConfigProperty has been changed to no longer lower case the first letter of the class. Implementations may still support this behavior. Instead, MicroProfile Config 1.1 requires the actual class name to be used.
    • Implementations must now support primitive types, in addition to the already specified primitive type wrappers
  • Specification Changes
    • Clarified what it means for a value to be present

75

76 of 89

Health Check

Health checks are used to probe the state of a computing node from another machine (i.e. kubernetes service controller) with the primary target being cloud infrastructure environments where automated processes maintain the state of computing nodes

76

77 of 89

Health Check 1.0 - Goals

  • MUST be compatibility with well known cloud platforms (i.e. http://kubernetes.io/docs/user-guide/liveness/)
  • MUST be appropriate for machine-to-machine communication
  • SHOULD give enough information for a human administrator

77

78 of 89

Metrics

To ensure reliable operation of software it is necessary to monitor essential system parameters. Metrics adds well-known monitoring endpoints and metrics for each process

78

Metric Registry

Required Base metrics

Application metrics

Vendor-specific metrics

79 of 89

Metrics 1.1 - Updates

New features:

  • Improved TCK.
  • org.eclipse.microprofile.metrics.MetricRegistry.register(String name, Metric, Metadata) is deprecated.
  • Use org.eclipse.microprofile.metrics.MetricRegistry.register(Metadata, Metric) instead, where Metadata already has a field for the name.
  • Global tags are now supplied via the means of MicroProfile Config (the env variable is still valid).
  • Annotations and Metadata can now have a flag reusable that indicates that the metric name can be registered more than once. Default is false as in Metrics

79

80 of 89

Fault Tolerance

Fault tolerance is about leveraging different strategies to guide the execution and result of some logic. Retry policies, bulkheads, and circuit breakers are popular concepts in this area. They dictate whether and when executions should take place, and fallbacks offer an alternative result when an execution does not complete successfully

80

81 of 89

Fault Tolerance 1.0 - Influence and goal

Multiple projects directly influenced this proposal and acted as basis for this API, such as:

  • Hystrix
  • Failsafe

Goal:

  • Separate the responsibility of executing logic (Runnables/Callables/etc) from guiding when execution should take place (through retry policies, bulkheads, circuit breakers)

81

82 of 89

JWT Propagation

The security requirements that involve microservice architectures are strongly related with RESTful Security. In a RESTful architecture style, services are usually stateless and any security state associated with a client is sent to the target service on every request in order to allow services to re-create a security context for the caller and perform both authentication and authorization checks

82

83 of 89

JWT Propagation 1.0 - Influence and goals

Multiple projects/standards directly influenced this proposal and acted as basis for this API, such as:

Goal:

  • One of the main strategies to propagate the security state from clients to services or even from services to services involves the use of security tokens.
  • For RESTful based microservices, security tokens offer a very lightweight and interoperable way to propagate identities across different services.

83

84 of 89

Eclipse MicroProfile 1.2 - release content

84

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Javadocs

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Spec HTML doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Technology Compatibility Kit (TCK)

- Product page

- Spec PDF doc

- Javadocs

- Technology Compatibility Kit (TCK)

85 of 89

Eclipse MicroProfile 1.1 (Aug, 2017)

85

MicroProfile 1.1

= New

= No change from last release

JAX-RS 2.0

JSON-P 1.0

CDI 1.2

Config 1.0

86 of 89

Configuration

Applications need to be configured based on a running environment. It must be possible to modify configuration data from outside an application so that the application itself does not need to be repackaged

86

Dev

Test

Prod

87 of 89

Configuration 1.0 - Influence

Multiple projects directly influenced this proposal and acted as basis for this API, such as:

87

88 of 89

Eclipse MicroProfile 1.1 - release content

  • MicroProfile 1.0
    • Contexts and Dependency Injection (CDI 1.2)
    • Java API for RESTful Web Services (JAX-RS 2.0)
    • Java API for JSON Processing (JSON-P 1.0)
  • Eclipse MicroProfile 1.1 Specification PDF document
  • Config 1.0:
    • Config 1.0 Specification PDF document
    • Javadocs
    • Test Compatibility Kit (TCK)

88

89 of 89

MicroProfile 1.0 (Sep, 2016)

89

MicroProfile 1.0

JAX-RS 2.0

JSON-P 1.0

CDI 1.2