Optimizing Enterprise Java for a Microservices Architecture Otávio Santana @otaviojava
- taviojava@apache.org
Optimizing Enterprise Java for a Microservices Architecture Otvio - - PowerPoint PPT Presentation
Optimizing Enterprise Java for a Microservices Architecture Otvio Santana @otaviojava otaviojava@apache.org Enterprise Java Standards History J2EE 1.2 J2EE 1.3 J2EE 1.4 Java EE 5 Java EE 6 Java EE 7 Java EE 8 2015 2000 2005 2010
J2EE 1.2 J2EE 1.3 J2EE 1.4 Java EE 5 Java EE 6 Java EE 7 Java EE 8
Release Cadence
○ Many innovative “microservices” efforts in existing Java EE projects ■ WildFly Swarm ■ WebSphere Liberty ■ Payara ■ TomEE ○ Projects already leveraging both Java EE and non-Java EE technologies ○ Creating new features/capabilities to address microservices architectures
JAX-RS CDI JSON-P
Vendor Choice Implementation Choice Application Portability Backwards Compatibility Reduced Risk Broad Collaboration Encouraged experimentation Fail Fast Rapid innovation
Second Quarter 2017!
@Priority(Priorities.AUTHENTICATION) public class JWTAuthFilter implements ContainerRequestFilter{ @Override public void filter(ContainerRequestContext requestContext) throws IOException { String authHeaderVal = requestContext.getHeaderString("Authorization"); if(authHeaderVal.startsWith("Bearer")){ try { validate(authHeaderVal.split(" ")[1]); } catch (InvalidJwtException ex) { requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).build()); } }else{ requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).build()); } }
@Path("/app") public class HealthCheckResource { @GET @Path("/diskspace") @Health public HealthStatus checkDiskspace() { [...] } @GET @Path("/something-else") @Health public HealthStatus checkSomethingElse() { [...] } } @ApplicationScoped public class HealthChecks { @Produces @Health public HealthStatus checkDiskspace() { [...] } @Produces @Health public HealthStatus checkSomethingElse() { [...] } }
CircuitBreaker cb = FaultToleranceFactory.getInstance(CircuitBreaker.class) .withFailureThreshold(3, 10) .withSuccessThreshold(5) .withDelay(1, TimeUnit.MINUTES); Connection connect = execution.with(cb).run(this::connect);
* Some Items may be removed due to lack of interest
* Some Items may be removed due to lack of interest
https://groups.google.com/forum/#!forum/microprofile
bit.ly/MicroProfileForum
https://github.com/microprofile/microprofile-samples