code quality in practice - oio orientation in objects ... · 2 © orientation in objects gmbh...

38
1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: WildFly Swarm Java EE in one JAR 1.0 WildFly Swarm - Java EE in one JAR © Orientation in Objects GmbH Abstract Microservices-Architekturen können mit klassischen Application Servern nichts anfangen, stattdessen geht der Trend hin zu Fat-JARs und Self-contained Systems, in denen die Anwendung ihre Ablaufumgebung mitbringt. Nach dem Erfolg von Spring Boot und Co. haben mittlerweile auch die klassischen Java-EE-Applikationsserver- Hersteller Microservices-Frameworks im Programm. In dieser Session wollen wir uns anschauen, wie mit WildFly Swarm die notwendigen Teile des WildFly AS mit der Applikation und allen benötigten Bibliotheken in einem ausführbaren JAR verpackt werden. Dazu diskutieren wir natürlich auch über für Microservices relevante Themen wie Konfiguration, Logging, Monitoring, Resilience und Service Discovery im Umfeld von WildFly Swarm. Als Abschluss wagen wir noch einen Ausblick auf Standardisierungsversuche im Rahmen von Java EE und der MicroProfile-Initiative. 2

Upload: vudiep

Post on 14-Aug-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

1

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]:

WildFly SwarmJava EE in one JAR

1.0

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH

Abstract

Microservices-Architekturen können mit klassischen Application Servern nichts anfangen, stattdessen geht der Trend hin zu Fat-JARs und Self-contained Systems, in denen die Anwendung ihre Ablaufumgebung mitbringt. Nach dem Erfolg von Spring Boot und Co. haben mittlerweile auch die klassischen Java-EE-Applikationsserver-Hersteller Microservices-Frameworks im Programm.

In dieser Session wollen wir uns anschauen, wie mit WildFly Swarm die notwendigen Teile des WildFly AS mit der Applikation und allen benötigten Bibliotheken in einem ausführbaren JAR verpackt werden. Dazu diskutieren wir natürlich auch über für Microservices relevante Themen wie Konfiguration, Logging, Monitoring, Resilience und Service Discovery im Umfeld von WildFly Swarm. Als Abschluss wagen wir noch einen Ausblick auf Standardisierungsversuche im Rahmen von Java EE und der MicroProfile-Initiative.

2

Page 2: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

2

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH

Ihre Sprecher

Trainer, Berater, Entwickler

3

Falk Sippach (@sippsack)

Architektur

Agile Softwareentwicklung

Codequalität

Co-Organisator

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 4

Microservices

Page 3: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

3

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 5

Spring BootDropwizardGrails

Play Framework

Ninja Web Framework

Vert.x

Spark Framework

WildFly Swarm

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH

6

Hello, World!

Paketierung

Konfiguration

Überwachen

Kommunikation

Ausblick

Page 4: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

4

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 7

Hello, World!

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 8

(1) Java EE Anwendung

(2) Maven Plugin

(3) Bauen + Starten

Page 5: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

5

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 9

(1) Java EE Anwendung

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 10

<build>

<finalName>demo</finalName>

<plugins>

<plugin>

<groupId>org.wildfly.swarm</groupId>

<artifactId>wildfly-swarm-plugin</artifactId>

<version>${version.wildfly.swarm}</version>

<executions>

<execution>

<goals>

<goal>package</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

(2) Maven Plugin

Page 6: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

6

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 11

(3) Bauen + Starten

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 12

DEMO

Page 7: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

7

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 13

Paketierung

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 14

WAR-Deployment Fat-JAR

Page 8: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

8

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 15

"… by packaging them with just enough of the server runtime to

"java -jar" your application."

http://wildfly-swarm.io/

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 16

App-Code

WildFly

SwarmJAX-RS

CDI JPA

Page 9: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

9

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 17

buildscript {

version = System.getProperty('swarmVersion') ?: '2016.11.0-SNAPSHOT'

}

apply plugin: 'wildfly-swarm'

swarm {

properties {

swarm.http.port = 8181

}

}

dependencyManagement {

imports {

mavenBom "org.wildfly.swarm:bom-all:$version"

}

}

dependencies {

compile "org.wildfly.swarm:jaxrs"

}

Und was

ist mit

Gradle?

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 18

Kommandozeilenwerkzeug: Swarmtool

Page 10: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

10

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 19

Konfiguration

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 20

(1) Build-Abhängigkeiten

Fractions

Auto-Detection Dependencies Programmatisch

Page 11: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

11

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 21

Fractions: Auto-Detection

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 22

Fractions: Explizite Dependencies

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>bom-all</artifactId>

<version>${version.wildfly.swarm}</version>

<scope>import</scope>

<type>pom</type>

</dependency>

</dependencies>

</dependencyManagement>

Page 12: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

12

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH

<!-- WildFly Swarm Fractions -->

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>hystrix</artifactId>

</dependency>

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>cdi</artifactId>

</dependency>

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>jaxrs</artifactId>

</dependency>

23

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 24

http://wildfly-swarm.io/generator/

Page 13: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

13

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 25

Fractions: Programmatisch

main-Methode mit DSL (Fluent Interface)

Konfiguration der Fractions und WAR-Inhalt

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 26

public class Main {

public static void main(String[] args) throws Exception {

Swarm container = new Swarm()

.fraction(new JAXRSFraction())

.start();

JAXRSArchive appDeployment = ShrinkWrap.create(JAXRSArchive.class)

.addResource(Book.class)

.addResource(BookResource.class)

.addAllDependencies();

container.deploy(appDeployment);

}

}

Page 14: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

14

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 27

(2) Laufzeitkonfiguration

standalone.xmlSystem PropertiesProperties/YAML

Java DSL

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 28

standalone.xml

Standard im WildFly

Konfiguration von Subsystemen, Realms, Datasources, Queues, Sockets, …

java -jar myapp-swarm.jar -c configurations/standalone.xml

Page 15: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

15

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 29

logger:

level: DEBUG

swarm:

context:

path: /

port:

offset: 10

logger:

level: INFO

swarm:

port:

offset: 100

project-defaults.yml

project-production.yml

java -jar myapp-swarm.jar

// -S oder -Dswarm.project.stage

// oder –D swarm.project.stage.file

java -jar myapp-swarm.jar -S production

Stages

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 30

Injection Konfigurationswerte

@Inject

@ConfigurationValue("swarm.context.path")

private String context;

@Inject

@ConfigurationValue("swarm.http.port")

private Integer port;

Page 16: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

16

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 31

Argument Description

-D<name> or

-D<name>=<value>Java System Property

-P<file-or-url> Properties Datei für System Properties

-c <file-or-url> XML-Konfiguration (standalone.xml oder ein Fragment)

-s <file-or-url> YAML-Konfigurationsdatei

-S <active-profile>Name des zu aktivierenden Profils (Konfig-Block oder

project-[profile].yml)

Kommandozeilenparameter

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 32

Name Description Default

swarm.ds.name Name der Datasource ExampleDS

swarm.ds.username Benutzername treiberspezifisch

swarm.ds.password Passwort treiberspezifisch

swarm.ds.connection.url JDBC URL treiberspezifisch

Name Description Default

swarm.bind.address Interface to bind servers 0.0.0.0

swarm.port.offset Ports verschieben 0

swarm.deployment.timeout Timeout (in Sekunden), wie lange das Deployment dauern darf 300

Vordefinierte Parameter

Page 17: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

17

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 33

Vorbereitete Server (Standalone Uber-JAR)

Keycloak

Swagger-UI

Management Console

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 34

Überwachen

Page 18: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

18

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 35

(1) Logging

jboss-logging

Logstash-Integration

FluentD-Integration

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 36

container.fraction(new LoggingFraction()

.fileHandler("FILE", f -> {

Map<String, String> fileProps = new HashMap<>();

fileProps.put("path", "./my.log");

f.file(fileProps);

f.level(Level.INFO);

f.formatter("%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n");

})

.rootLogger(Level.INFO, "FILE"));

swarm.logging=DEBUG

-Dswarm.logging=DEBUG

Konfiguration

Page 19: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

19

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 37

swarm.logstash.hostname = logstash.intern

swarm.logstash.port = 9300

Konfiguration

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>logstash</artifactId>

</dependency>

Fraction

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 38

(2) Monitoring

Laufzeit-Status der Knoten

Health Check API

Page 20: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

20

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 39

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>monitor</artifactId>

</dependency>

Fraction

http://localhost:8080/node

http://localhost:8080/heap

http://localhost:8080/threads

http://localhost:8080/health

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 40

@GET

@Path("/diskSpace")

@Health

public HealthStatus checkDiskspace() {

File path = new File(".");

long freeBytes = path.getFreeSpace();

long threshold = 1024 * 1024 * 100; // 100mb

return freeBytes>threshold ? HealthStatus.named("diskspace").up() :

HealthStatus.named("diskspace").down().withAttribute("freebytes", freeBytes);

}

Page 21: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

21

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 41

(3) Management

Management Interface

Management Console

Jolokia (JMX over HTTP)

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 42

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>management</artifactId>

</dependency>

Fraction

swarm.management.http.port = 9990

swarm.management.https.port = 9993

Konfiguration

Page 22: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

22

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 43

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>jolokia</artifactId>

</dependency>

Fraction

/jolokia/read/java.lang:type=Memory/HeapMemoryUsage

{"request": {

"mbean": "java.lang:type=Memory","attribute": "HeapMemoryUsage","type": "read"

},"value": {

"init": 268435456,"committed": 349700096,"max": 3790077952,"used": 207878656

},"timestamp": 1494375975,"status": 200

}

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 44

DEMO

Page 23: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

23

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 45

Kommunikation

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 46

(1) Kommunikation

REST (JAX-RS)

Messaging (JMS)

Page 24: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

24

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 47

(2) Datenzugriff

JPA, Datasources

NoSQL in Arbeit

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 48

JPA

Auto-Detection mit ExampleDS

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>jpa</artifactId>

</dependency>

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<version>${version.h2}</version>

</dependency>

Page 25: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

25

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH

.fraction(new DatasourcesFraction()

.jdbcDriver("h2", (d) -> {

d.driverClassName("org.h2.Driver");

d.xaDatasourceClass("org.h2.jdbcx.JdbcDataSource

d.driverModuleName("com.h2database.h2");

})

.dataSource("MyDS", (ds) -> {

ds.driverName("h2");

ds.connectionUrl("jdbc:h2:mem:test;DB_CLOSE_DELAY

ds.userName("sa");

ds.password("sa");

})

)

49

Datasource

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<version>${version.h2}</version>

</dependency>

JDBC-Treiber

(Auto-Detection oder explizit)

Datasource-Definition

(DSL, YAML oder XML)

swarm:

datasources:

data-sources:

MyDS:

driver-name: myh2

connection-url: jdbc:h2:mem:test;DB_CLOSE_DELAY

user-name: sa

password: sa

jdbc-drivers:

myh2:

driver-class-name: org.h2.Driver

xa-datasource-name: org.h2.jdbcx.JdbcDataSource

driver-module-name: com.h2database.h2

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 50

(3) Service Discovery + Registration

Topology Fraction

JGroups oder Consul

Page 26: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

26

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 51

Topology topology = Topology.lookup();

Map<String, ?> services = topology.asMap();

Client

JAXRSArchive deployment = ShrinkWrap.create(JAXRSArchive.class);

deployment.as(TopologyArchive.class).advertise("books");

Registrieren

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 52

(4) Resilience

Hystrix

Ribbon

Page 27: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

27

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 53

@ResourceGroup( name="time" )

public interface TimeService {

TimeService INSTANCE = Ribbon.from(TimeService.class);

@TemplateName("currentTime")

@Http(method = Http.HttpMethod.GET, uri = "/")

@Hystrix(fallbackHandler = TimeFallbackHandler.class)

RibbonRequest<ByteBuf> currentTime();

}

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 54

(5) Security

Security Realm

JAAS

SSO mit Keycloak

Page 28: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

28

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 55

container.fraction(new ManagementFraction()

.securityRealm("ManagementRealm", (realm) -> {

realm.inMemoryAuthentication((authn) -> {

authn.add("admin", "geheim", true);

});

realm.inMemoryAuthorization((authz) -> {

authz.add("admin", "admin");

});

})

);

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 56

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>keycloak</artifactId>

</dependency>

Fraction

JAXRSArchive deployment = ShrinkWrap.create(JAXRSArchive.class);

deployment.as(Secured.class)

.protect("/books")

.withMethod("GET")

.withRole("admin");

swarm.keycloak.json.path = /srv/…

Konfiguration

Page 29: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

29

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 57

<dependency>

<groupId>org.wildfly.swarm</groupId>

<artifactId>keycloak-server</artifactId>

</dependency>

Fraction

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 58

(6) Testen

Arquillian

Page 30: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

30

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 59

@RunWith(Arquillian.class)

public class UserServiceTests {

@Inject

private UserService service;

@Test

public void testGetAllUsers() {

assertEquals(3, service.getAllUsers().size());

}

@Deployment

public static Archive createDeployment() {

JAXRSArchive deployment = ShrinkWrap.create(JAXRSArchive.class);

deployment.addResource(UserService.class);

return deployment;

}

}

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 60

Ausblick

Page 31: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

31

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 61

(1) Java EE 8

Released: September 2017Security API statt

JMS 2.1, Management 2.0 + MVC API

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 62

(2) Java EE 9

Ursprünglich geplant für 2018Reaktive APIs, OAuth + OpenID, Circuit

Breaker, NoSQL APIs

Page 32: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

32

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 63

(3) MicroProfile

IBM, RedHat, Tomitribe, …

Zukunft: Java EE Profil?

Abwarten, was mit EE4J passiert!

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 64

Vendor Microservice JAR size/MbStart Up Time/Secs

WebSphere Liberty

Session Voting 35 7

WildFly Swarm Session 65 6

PayaraSession Schedule

33 5

TomEE Speaker 35 3

KumuluzEE*Session Schedule

11 2

https://readlearncode.com/java-ee/eclipse-microprofile-5-things-you-need-to-know

(3) Enterprise Java ist schwergewichtig?

Page 33: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

33

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 65

(3) MicroProfile

September 2016: 1.0

CDI, JAX-RS, JSON-P

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 66

(3) MicroProfile

Juli 2017: 1.1

Config 1.0

Page 34: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

34

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 67

(3) MicroProfile

September 2017: Version 1.2

Health Check 1.0, Metrics 1.0, Fault Tolerance 1.0, JWT Propagation 1.0, JSON-P 1.0, JAX-RS 2.0, , Config 1.1

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 68

(3) Roadmap MicroProfile

Dezember 2017: Version 1.3

März 2018: Version 2.0 (Java EE 8 Update)

Page 35: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

35

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 69

(4) Warum Standards?

Unabhängigkeit

Bewährt

Know-How

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 70

Fazit

Page 36: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

36

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 71

WildFly Swarm

veröffentlicht im Mai 2015

1.0.0 seit Juni 2016

Monatliche Releases seit 2016.8.1

Apache License 2.0

http://wildfly-swarm.io

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 72

Vorteile

Lösung auf Basis von Java EE

Fat-JAR oder App-Server

Drittbibliotheken (Ribbon, Hystrix, …)

Integration (Keycloak, Hawkular, …)

Page 37: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

37

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 73

Nachteile

kurze Releasezyklen

Unstable Fractions

wenige Drittbibliotheken

Doku und Demos "im Fluß"

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH 74

Feature WildFly Swarm

REST-APIs JAX-RS, Swagger, HATEOAS

Messaging JMS

Deployment Fat JAR oder WAR

Build-Tools Maven, Gradle, Swarmtool

Konfiguration System-/Umgebungsvariablen, standalone.xml,

Properties-/YAML-Dateien

Unterstützung von Stages/Profile

Logging jboss-logging, Logstash

Monitoring ja mit Health Checks, Hawkular

Management HTTP, JMX, Jolokia

Sicherheit JAAS, Keycloak (SSO, OAuth, OpenID)

Service Discovery JGroups oder Consul

Resilience Hystrix, Ribbon

Page 38: Code Quality in Practice - OIO Orientation in Objects ... · 2 © Orientation in Objects GmbH WildFly Swarm - Java EE in one JAR Ihre Sprecher Trainer, Berater, Entwickler 3 Falk

38

WildFly Swarm - Java EE in one JAR© Orientation in Objects GmbH

Links

• WildFly Swarm User's Guide

– https://wildfly-swarm.gitbooks.io/wildfly-swarm-users-guide/

• WildFly Swarm Reference Guide

– https://reference.wildfly-swarm.io/

• WildFly Swarm HOWTO

– https://howto.wildfly-swarm.io/

• WildFly Swarm Examples

– https://github.com/wildfly-swarm/wildfly-swarm-examples

75

Orientation in Objects GmbH

Weinheimer Str. 68

68309 Mannheim

www.oio.de

[email protected]

Vielen Dank für Ihre

Aufmerksamkeit!