SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Java EE Microservices ohne Server
Expertenkreis Java, 08.12.2016, GEDOPLAN
Dirk Weil, GEDOPLAN GmbH
Dirk Weil
GEDOPLAN GmbH, Bielefeld
GEDOPLAN IT Consulting
Konzeption, Realisierung von IT-Lösungen
GEDOPLAN IT Training
Seminare in Berlin, Bielefeld, on-site
Java EE seit 1998
Vorträge, Veröffentlichungen
Java EE Microservices ohne Server 2gedoplan.de
200x – J(2)EE
Monolithische Anwendungen
Schwergewichtige Application Server
Java EE Microservices ohne Server 3gedoplan.de
JVM
J(2)EE Server
Web Shop AccountingLogistics
200x – J(2)EE - reloaded
Monolithische Anwendungen
Schwergewichtige Application Server
SLAs
Java EE Microservices ohne Server 4gedoplan.de
JVM
J(2)EE
Server
Web Shop
JVM
J(2)EE
Server
Accounting
JVM
J(2)EE
Server
Logistics
201x – Java EE - Microservices
Leichtgewichtige, „kleine“ Services
Unabhängig deploybar
Java EE Microservices ohne Server 5gedoplan.de
JVM
Java EE
Server
Catalog
JVM
Java EE
Server
Billing
JVM
Java EE
Server
Stock
JVM
Java EE
Server
Order
JVM
Java EE
Server
Payment
JVM
Java EE
Server
Supplier
JVM
Java EE
Server
Carrier
JVM
Java EE
Server
Tax
Programm-Modell
Java EE
Ausgereifte Bestandteile
Java EE Microservices ohne Server 6gedoplan.de
Browser Desktop/Mobile
JavaServer Faces Webservice
Servlet
CDI
Enterprise
JavaBeans
Connector MessagingJava Persistence
Java Batch
Betriebs-Modell
Zirkuläre Abhängigkeit
Wunsch: Betrieb als ein Executable
Java EE Microservices ohne Server 7gedoplan.de
Java EE
Server
Appli-
cation
benötigt
Ressourcen
von
wird
konfiguriert
für
eine Komponente!
WildFly Swarm
Infrastruktur-Baukasten
auf Basis von WildFly
Anwendungscode
+ notwendige „Fractions“
================
ausführbares UberJAR
Java EE Microservices ohne Server 8gedoplan.de
SSO
TX
LB
Logging
Messa-
ging
Remote
Health
Cache
JPACDIRESTWeb
Application Code
WildFly Swarm
Komposition in Maven
Java EE Microservices ohne Server 9gedoplan.de
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>bom-all</artifactId>
<version>2016.11.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>jaxrs-cdi</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>jpa</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
WildFly Swarm
Plugin zum Bau des UberJAR
Java EE Microservices ohne Server 10gedoplan.de
<plugin>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-plugin</artifactId>
<version>2016.11.0</version>
<configuration>
<mainClass>de.gedoplan.micro.bootstrap.SwarmBootstrap</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
WildFly Swarm
Konfiguration in main-Klasse
Java EE Microservices ohne Server 11gedoplan.de
public class SwarmBootstrap {
public static void main(String[] args) throws Exception {
Swarm swarm = new Swarm();
System.setProperty("swarm.context.path", "micro-ohne-server");
URL standaloneFullXml = SwarmBootstrap.class
.getClassLoader()
.getResource("configuration/standalone-full.xml");
swarm
.withXmlConfig(standaloneFullXml)
.start()
.deploy();
}
}
WildFly Swarm
Start der main-Klasse in IDE
Start als ausführbares JAR
Java EE Microservices ohne Server 12gedoplan.de
Payara Micro
Reduzierter Server auf Basis von Payara
<70MB
Web Profile
JBatch, JCache, Concurrency
Anwendung = Standard-WAR
„Deployment“ per CmdLine-Parameter
Konfiguration mittels externer Konfigurationsdatei möglich
Java EE Microservices ohne Server 13gedoplan.de
Payara Micro
Start als ausführbares JAR
mit Deployment
und ggf. Konfigurationsdatei
Java EE Microservices ohne Server 14gedoplan.de
java 
-jar targetdependencypayara-micro-4.1.1.164.jar 
--domainConfig targetclassesmicrodomain-nocluster.xml 
--deploy targetmicro-ohne-server.war
KumuluzEE
Leichtgewichtiges Framework aus Java-EE-Komponenten
JSF (Mojarra)
JAX-RS (Jersey)
JAX-WS (Metro)
Servlet, JSP, Websocket (Jetty)
CDI (Weld)
JPA (EclipseLink)
BV (Hibernate Validator)
JSON-P
Java EE Microservices ohne Server 15gedoplan.de
KumuluzEE
Komposition
in Maven
Java EE Microservices ohne Server 16gedoplan.de
<dependencies>
<dependency>
<groupId>com.kumuluz.ee</groupId>
<artifactId>kumuluzee-core</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.kumuluz.ee</groupId>
<artifactId>kumuluzee-servlet-jetty</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.kumuluz.ee</groupId>
<artifactId>kumuluzee-jax-rs-jersey</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.kumuluz.ee</groupId>
<artifactId>kumuluzee-cdi-weld</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>
KumuluzEE
Plugin zur Bereitstellung der Dependencies
Java EE Microservices ohne Server 17gedoplan.de
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
KumuluzEE
Optional: main-Klasse
Java EE Microservices ohne Server 18gedoplan.de
public class KumuluzEEBootstrap {
public static void main(String[] args) {
new EeApplication(new CustomizedEeConfig());
}
private static class CustomizedEeConfig extends EeConfig {
private ServerConfig serverConfig = new CustomizedServerConfig();
public ServerConfig getServerConfig() {
return this.serverConfig;
}
}
private static class CustomizedServerConfig extends ServerConfig {
public String getContextPath() {
return "/micro-ohne-server";
}
}
KumuluzEE
Start der main-Klasse in IDE
Start als ausführbares JAR
Java EE Microservices ohne Server 19gedoplan.de
Footprint der Demoanwendung
Disk size
Java EE Microservices ohne Server 20gedoplan.de
0,0 MB
20,0 MB
40,0 MB
60,0 MB
80,0 MB
100,0 MB
120,0 MB
140,0 MB
160,0 MB
180,0 MB
Application
Platform
Footprint der Demoanwendung
Memory
Java EE Microservices ohne Server 21gedoplan.de
0 MB
50 MB
100 MB
150 MB
200 MB
250 MB
300 MB
350 MB
400 MB
450 MB
Footprint der Demoanwendung
Startup time
Java EE Microservices ohne Server 22gedoplan.de
0,0 s
2,0 s
4,0 s
6,0 s
8,0 s
10,0 s
12,0 s
Application
Platform
Demo-Projekt
https://github.com/GEDOPLAN/micro-ohne-server
Java EE Microservices ohne Server 23gedoplan.de
Besonderheiten
WildFly Swarm
Home Page
http://wildfly-swarm.io/
User‘s Guide
https://www.gitbook.com/book/wildfly-
swarm/wildfly-swarm-users-guide
Project Configurator
http://wildfly-swarm.io/generator/
Fraction autodetect
Java EE Microservices ohne Server 24gedoplan.de
Besonderheiten
WildFly Swarm
Großes Angebot an Fractions
Camel, Flyway, EclipseLink, Hystrix, LogStash, Health, Ribbon,
Keycloak, Modcluster, …
Hollow Uber Jar
funktioniert leider nicht mit Main Class
Shutdown hook
fährt Anwendung leider nicht immer zuverlässig herunter
Achtung: Breaking changes 2016.11.0  2016.12.0
s. http://wildfly-swarm.io/posts/announcing-wildfly-swarm-2016-12-0/
Java EE Microservices ohne Server 25gedoplan.de
Besonderheiten
Payara Micro
Payara (Hydrolycus scomberoides)  Vampirfisch
Home Page
http://www.payara.fish/
Documentation
https://payara.gitbooks.io/payara-
server/content/documentation/payara-
micro/payara-micro.html
Java EE Microservices ohne Server 26gedoplan.de
Besonderheiten
Payara Micro
Uber Jar
Application Scope teilweise fehlerhaft
Initalized Lifecycle Event kommt mehrfach
@PersistenceContext wird nicht ausgeführt
Java EE Microservices ohne Server 27gedoplan.de
Besonderheiten
KumuluzEE
Home page
https://ee.kumuluz.com/
Documentation
… leider nur Tutorial und Sample auf GitHub
Web Root Directory ist webapp im Classpath
Keine vollständige Java-EE-Unterstützung
Java EE Microservices ohne Server 28gedoplan.de
Fazit
„Rightsizing your Applications“ ohne Program-Modell-Änderung
Anwendungen bleiben kompatibel zu klassischen App Servern
Aber: Selber komponieren (WildFly Swarm, KumuluzEE)
WildFly Swarm: Umfangreichste Implementierung
Payara Micro: OOTB nutzbar, allerdings nur Web Profile +
KumuluzEE: Schlankste Implementierung, aber auch unvollständig
Turn-around-Zeiten werden teilweise größer
Aktuelle klassische App Server sind auch keine Monster
Und … Docker … stay tuned
Java EE Microservices ohne Server 29gedoplan.de
More
http://gedoplan-it-consulting.de/expertenkreis-
java/archiv/
Präsentation zum Download
http://www.gedoplan-it-training.de
Seminare in Berlin, Bielefeld, Inhouse
http://www.gedoplan-it-consulting.de
Reviews, Coaching, …
Blog
 dirk.weil@gedoplan.de
@dirkweil
Java EE Microservices ohne Server 30gedoplan.de

Weitere ähnliche Inhalte

Ähnlich wie Java EE Microservices ohne Server

Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballastgedoplan
 
JEE und Micro – kein Widerspruch!
JEE und Micro – kein Widerspruch!JEE und Micro – kein Widerspruch!
JEE und Micro – kein Widerspruch!gedoplan
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederChristoph Pickl
 
Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!gedoplan
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOpsAndreas Koop
 
Rapid Deployment mit JomaSoft VDCF
Rapid Deployment mit JomaSoft VDCFRapid Deployment mit JomaSoft VDCF
Rapid Deployment mit JomaSoft VDCFJomaSoft
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...gedoplan
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...gedoplan
 
Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus gedoplan
 
Microservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMicroservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMichael Hofmann
 
MicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit QuarkusMicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit Quarkusgedoplan
 
JEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführunggedoplan
 
ANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat AnsibleANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat AnsibleCarolineAuerMarcher
 
Enterprise UI
Enterprise UIEnterprise UI
Enterprise UIgedoplan
 
Rapid Deploy von OS, Virtualsierung und Applikation
Rapid Deploy von OS, Virtualsierung und ApplikationRapid Deploy von OS, Virtualsierung und Applikation
Rapid Deploy von OS, Virtualsierung und ApplikationJomaSoft
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007smancke
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollWolfgang Weigend
 
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained...
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained...Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained...
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained...gedoplan
 

Ähnlich wie Java EE Microservices ohne Server (20)

Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballast
 
JEE und Micro – kein Widerspruch!
JEE und Micro – kein Widerspruch!JEE und Micro – kein Widerspruch!
JEE und Micro – kein Widerspruch!
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael Greifeneder
 
Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
 
Rapid Deployment mit JomaSoft VDCF
Rapid Deployment mit JomaSoft VDCFRapid Deployment mit JomaSoft VDCF
Rapid Deployment mit JomaSoft VDCF
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus
 
Microservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMicroservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM Liberty
 
MicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit QuarkusMicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit Quarkus
 
JEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführung
 
ANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat AnsibleANEO | Automatisierung mit RedHat Ansible
ANEO | Automatisierung mit RedHat Ansible
 
Enterprise UI
Enterprise UIEnterprise UI
Enterprise UI
 
OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021
 
Rapid Deploy von OS, Virtualsierung und Applikation
Rapid Deploy von OS, Virtualsierung und ApplikationRapid Deploy von OS, Virtualsierung und Applikation
Rapid Deploy von OS, Virtualsierung und Applikation
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
 
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained...
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained...Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained...
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained...
 

Java EE Microservices ohne Server

  • 1. Java EE Microservices ohne Server Expertenkreis Java, 08.12.2016, GEDOPLAN Dirk Weil, GEDOPLAN GmbH
  • 2. Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Konzeption, Realisierung von IT-Lösungen GEDOPLAN IT Training Seminare in Berlin, Bielefeld, on-site Java EE seit 1998 Vorträge, Veröffentlichungen Java EE Microservices ohne Server 2gedoplan.de
  • 3. 200x – J(2)EE Monolithische Anwendungen Schwergewichtige Application Server Java EE Microservices ohne Server 3gedoplan.de JVM J(2)EE Server Web Shop AccountingLogistics
  • 4. 200x – J(2)EE - reloaded Monolithische Anwendungen Schwergewichtige Application Server SLAs Java EE Microservices ohne Server 4gedoplan.de JVM J(2)EE Server Web Shop JVM J(2)EE Server Accounting JVM J(2)EE Server Logistics
  • 5. 201x – Java EE - Microservices Leichtgewichtige, „kleine“ Services Unabhängig deploybar Java EE Microservices ohne Server 5gedoplan.de JVM Java EE Server Catalog JVM Java EE Server Billing JVM Java EE Server Stock JVM Java EE Server Order JVM Java EE Server Payment JVM Java EE Server Supplier JVM Java EE Server Carrier JVM Java EE Server Tax
  • 6. Programm-Modell Java EE Ausgereifte Bestandteile Java EE Microservices ohne Server 6gedoplan.de Browser Desktop/Mobile JavaServer Faces Webservice Servlet CDI Enterprise JavaBeans Connector MessagingJava Persistence Java Batch
  • 7. Betriebs-Modell Zirkuläre Abhängigkeit Wunsch: Betrieb als ein Executable Java EE Microservices ohne Server 7gedoplan.de Java EE Server Appli- cation benötigt Ressourcen von wird konfiguriert für eine Komponente!
  • 8. WildFly Swarm Infrastruktur-Baukasten auf Basis von WildFly Anwendungscode + notwendige „Fractions“ ================ ausführbares UberJAR Java EE Microservices ohne Server 8gedoplan.de SSO TX LB Logging Messa- ging Remote Health Cache JPACDIRESTWeb Application Code
  • 9. WildFly Swarm Komposition in Maven Java EE Microservices ohne Server 9gedoplan.de <dependencyManagement> <dependencies> <dependency> <groupId>org.wildfly.swarm</groupId> <artifactId>bom-all</artifactId> <version>2016.11.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.wildfly.swarm</groupId> <artifactId>jaxrs-cdi</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.wildfly.swarm</groupId> <artifactId>jpa</artifactId> <scope>provided</scope> </dependency> </dependencies>
  • 10. WildFly Swarm Plugin zum Bau des UberJAR Java EE Microservices ohne Server 10gedoplan.de <plugin> <groupId>org.wildfly.swarm</groupId> <artifactId>wildfly-swarm-plugin</artifactId> <version>2016.11.0</version> <configuration> <mainClass>de.gedoplan.micro.bootstrap.SwarmBootstrap</mainClass> </configuration> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> </plugin>
  • 11. WildFly Swarm Konfiguration in main-Klasse Java EE Microservices ohne Server 11gedoplan.de public class SwarmBootstrap { public static void main(String[] args) throws Exception { Swarm swarm = new Swarm(); System.setProperty("swarm.context.path", "micro-ohne-server"); URL standaloneFullXml = SwarmBootstrap.class .getClassLoader() .getResource("configuration/standalone-full.xml"); swarm .withXmlConfig(standaloneFullXml) .start() .deploy(); } }
  • 12. WildFly Swarm Start der main-Klasse in IDE Start als ausführbares JAR Java EE Microservices ohne Server 12gedoplan.de
  • 13. Payara Micro Reduzierter Server auf Basis von Payara <70MB Web Profile JBatch, JCache, Concurrency Anwendung = Standard-WAR „Deployment“ per CmdLine-Parameter Konfiguration mittels externer Konfigurationsdatei möglich Java EE Microservices ohne Server 13gedoplan.de
  • 14. Payara Micro Start als ausführbares JAR mit Deployment und ggf. Konfigurationsdatei Java EE Microservices ohne Server 14gedoplan.de java -jar targetdependencypayara-micro-4.1.1.164.jar --domainConfig targetclassesmicrodomain-nocluster.xml --deploy targetmicro-ohne-server.war
  • 15. KumuluzEE Leichtgewichtiges Framework aus Java-EE-Komponenten JSF (Mojarra) JAX-RS (Jersey) JAX-WS (Metro) Servlet, JSP, Websocket (Jetty) CDI (Weld) JPA (EclipseLink) BV (Hibernate Validator) JSON-P Java EE Microservices ohne Server 15gedoplan.de
  • 16. KumuluzEE Komposition in Maven Java EE Microservices ohne Server 16gedoplan.de <dependencies> <dependency> <groupId>com.kumuluz.ee</groupId> <artifactId>kumuluzee-core</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.kumuluz.ee</groupId> <artifactId>kumuluzee-servlet-jetty</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.kumuluz.ee</groupId> <artifactId>kumuluzee-jax-rs-jersey</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.kumuluz.ee</groupId> <artifactId>kumuluzee-cdi-weld</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency>
  • 17. KumuluzEE Plugin zur Bereitstellung der Dependencies Java EE Microservices ohne Server 17gedoplan.de <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> </execution> </executions> </plugin>
  • 18. KumuluzEE Optional: main-Klasse Java EE Microservices ohne Server 18gedoplan.de public class KumuluzEEBootstrap { public static void main(String[] args) { new EeApplication(new CustomizedEeConfig()); } private static class CustomizedEeConfig extends EeConfig { private ServerConfig serverConfig = new CustomizedServerConfig(); public ServerConfig getServerConfig() { return this.serverConfig; } } private static class CustomizedServerConfig extends ServerConfig { public String getContextPath() { return "/micro-ohne-server"; } }
  • 19. KumuluzEE Start der main-Klasse in IDE Start als ausführbares JAR Java EE Microservices ohne Server 19gedoplan.de
  • 20. Footprint der Demoanwendung Disk size Java EE Microservices ohne Server 20gedoplan.de 0,0 MB 20,0 MB 40,0 MB 60,0 MB 80,0 MB 100,0 MB 120,0 MB 140,0 MB 160,0 MB 180,0 MB Application Platform
  • 21. Footprint der Demoanwendung Memory Java EE Microservices ohne Server 21gedoplan.de 0 MB 50 MB 100 MB 150 MB 200 MB 250 MB 300 MB 350 MB 400 MB 450 MB
  • 22. Footprint der Demoanwendung Startup time Java EE Microservices ohne Server 22gedoplan.de 0,0 s 2,0 s 4,0 s 6,0 s 8,0 s 10,0 s 12,0 s Application Platform
  • 24. Besonderheiten WildFly Swarm Home Page http://wildfly-swarm.io/ User‘s Guide https://www.gitbook.com/book/wildfly- swarm/wildfly-swarm-users-guide Project Configurator http://wildfly-swarm.io/generator/ Fraction autodetect Java EE Microservices ohne Server 24gedoplan.de
  • 25. Besonderheiten WildFly Swarm Großes Angebot an Fractions Camel, Flyway, EclipseLink, Hystrix, LogStash, Health, Ribbon, Keycloak, Modcluster, … Hollow Uber Jar funktioniert leider nicht mit Main Class Shutdown hook fährt Anwendung leider nicht immer zuverlässig herunter Achtung: Breaking changes 2016.11.0  2016.12.0 s. http://wildfly-swarm.io/posts/announcing-wildfly-swarm-2016-12-0/ Java EE Microservices ohne Server 25gedoplan.de
  • 26. Besonderheiten Payara Micro Payara (Hydrolycus scomberoides)  Vampirfisch Home Page http://www.payara.fish/ Documentation https://payara.gitbooks.io/payara- server/content/documentation/payara- micro/payara-micro.html Java EE Microservices ohne Server 26gedoplan.de
  • 27. Besonderheiten Payara Micro Uber Jar Application Scope teilweise fehlerhaft Initalized Lifecycle Event kommt mehrfach @PersistenceContext wird nicht ausgeführt Java EE Microservices ohne Server 27gedoplan.de
  • 28. Besonderheiten KumuluzEE Home page https://ee.kumuluz.com/ Documentation … leider nur Tutorial und Sample auf GitHub Web Root Directory ist webapp im Classpath Keine vollständige Java-EE-Unterstützung Java EE Microservices ohne Server 28gedoplan.de
  • 29. Fazit „Rightsizing your Applications“ ohne Program-Modell-Änderung Anwendungen bleiben kompatibel zu klassischen App Servern Aber: Selber komponieren (WildFly Swarm, KumuluzEE) WildFly Swarm: Umfangreichste Implementierung Payara Micro: OOTB nutzbar, allerdings nur Web Profile + KumuluzEE: Schlankste Implementierung, aber auch unvollständig Turn-around-Zeiten werden teilweise größer Aktuelle klassische App Server sind auch keine Monster Und … Docker … stay tuned Java EE Microservices ohne Server 29gedoplan.de
  • 30. More http://gedoplan-it-consulting.de/expertenkreis- java/archiv/ Präsentation zum Download http://www.gedoplan-it-training.de Seminare in Berlin, Bielefeld, Inhouse http://www.gedoplan-it-consulting.de Reviews, Coaching, … Blog  dirk.weil@gedoplan.de @dirkweil Java EE Microservices ohne Server 30gedoplan.de