SlideShare une entreprise Scribd logo
1  sur  63
WildFly App Server
State of the Union
Dimitris Andreadis
Sr. Engineering Mgr
Red Hat JBoss EAP / WildFly
twitter: @dandreadis
How it all started? (for me*)
*http://dandreadis.blogspot.ch/2014/10/10-years-on-red-pill.html
JBoss AS/EAP, WildFly Fan(atic)
•2001, JBoss User
•2003, JBoss Committer
•2004, JBoss Full-time Core Developer
•2006, JBoss AS Lead (v3.2.8+, v4.0.4+, v4.2.x, 5.0.x)
•2009, JBoss AS Engineering Manager
•2013, JBoss EAP/WildFly Sr. Engineering Manager
And before JBoss?
•7y experience in distributed systems (telcos, NMS/OSS)
•BSc/MSc Computer Science (Athens/Dublin)
about.me/dandreadis
Agenda
• WildFly pre-History
• WildFly V8 Recap
• WildFly V9 Update
• WildFly Swarm & V10
WildFly*
pre-History
*the server once called JBoss Application Server
JBoss AS Timeline
20072006200520042003
JBossVersions
Time
JBoss AS 4.0.0 – 4.0.5
JBoss AS 4.2.0 – 4.2.3
JBoss AS 5: 5.0.0.GA, 5.0.1.GA
JBoss AS 3.2.0 – 3.2.8
JBoss AS 5.1
20092008
J2EE 1.3, JDK 1.3
JMX MicroKernel Architecture
J2EE 1.4 certification
JTS, JDK 1.4
JEE 5.0 compatible,
not certified (95% pass)
JDK5.0, EAP 4.2 basis
JavaEE 5 certification, JDK5 & 6
MicroContainer Architecture
2010 2011
JBoss AS 6.0, 6.1
JBoss AS 7.0, 7.0.1, 7.0.2
JavaEE 6 Web Profile, JDK6
JavaEE 6 Web Profile, JDK6/JDK7
Modular Service Container Architecture
2012
JBoss AS 7.1, 7.1.1
JavaEE 6 Full Profile, JDK6/JDK7
Complete Clustering Support, EAP6 basis
JSF-Based Console, EAP5 basis
Red Hat Acquisition
Project vs EE spec
• JBoss AS 2  J2EE 1.2
• JBoss AS 3  J2EE 1.3
• JBoss AS 4  J2EE 1.4
• JBoss AS 5  Java EE 5
• JBoss AS 6 , AS7  Java EE 6
• WildFly 8, 9, 10  Java EE 7
Project vs EE spec vs Product
• JBoss AS 2  J2EE 1.2
• JBoss AS 3  J2EE 1.3
• JBoss AS 4  J2EE 1.4  EAP 4
• JBoss AS 5  Java EE 5  EAP 5
• JBoss AS 6 , AS7  Java EE 6  EAP 6
• WildFly 8, 9, 10  Java EE 7  EAP 7
*Red Hat JBoss Enterprise Application Platform (EAP)
WildFly vs JBoss EAP
JBoss AS Kernel Taxonomy
• JBoss AS 2.x, 3.x, 4.x
• JBoss JMX MicroKernel
• JBoss AS 5.x, 6.x
• JBoss MC - MicroContainer
• JBoss AS7.x, WildFly 8.x, 9, 10
• JBoss MSC - Modular Service Container
AS7 Innovations - MSC
Modular Services Container (MSC)
• Small, lightweight, and efficient
• Highly concurrent & scalable state machine
• Multiple startup modes
•Active, Passive, On-Demand, Lazy, Never
Concurrent Service Container
Service Controller
Service Registry
Service Builder
Service Deps Value Listeners Injectors
Innovations – JBoss Modules
Small, lightweight, and efficient
•Highly concurrent class loading
•Fast with O(1) dependency resolution
“Pure” modular class loading
•Modules only see what they import
•Including JDK classes
External module definitions
•Don’t have to break open the JAR
Modular Class Loading
• A graph of Class Loaders, not a tree
• Modules delegate to one another as peers
• A module imports modules it directly uses
• Transitive dependencies are hidden, by default
• Different module versions may co-exist
modulesorghornetqmainmodule.xml
<module xmlns="urn:jboss:module:1.0" name="org.hornetq">
<resources>
<resource-root path="hornetq-core-2.2.10.Final.jar"/>
<resource-root path="hornetq-jms-2.2.10.Final.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.jms.api"/>
<module name="javax.resource.api"/>
<module name="org.jboss.jts"/>
<module name="org.jboss.netty"/>
</dependencies>
</module>
So What?
#@*%ing fast!
http://community.jboss.org/wiki/AS7StartupTimeShowdown
Boot Time Results
Memory Comparison
@#$% fast: How is it done?
• Concurrent startup/deployments
• Faster resource lookup/classloading
• Annotation indexing
• Caching of reflection metadata
• Lazy loading of (some) services
• StAX based descriptor parsing
• Starting from scratch 
Two Operational Modes
Standalone
•Traditional JBoss single JVM server
•Management facilities IN-VM
•No lifecycle management (only shutdown)
Domain
•Multi-JVM, multi-server model
•Management coordinated by Domain Controller Process
•Multiple server instances (JVMs) per Host
•Full lifecycle managed by Process Controller
Domain Mode
User-focused Configuration
<bean name="TransactionManager" class="com.arjuna.ats.jbossatx.jta.TransactionManagerService">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss:service=TransactionManager",
exposedInterface=com.arjuna.ats.jbossatx.jta.TransactionManagerServiceMBean.class, registerDirectly=true)</annotation>
<annotation>@org.jboss.managed.api.annotation.ManagementObject(name="TransactionManager",componentType=@org.jb
oss.managed.api.annotation.ManagementComponent(type = "MCBean", subtype =
"JTA"),targetInterface=com.arjuna.ats.jbossatx.jta.TransactionManagerServiceMBean.class)
</annotation>
<property name="transactionTimeout">300</property>
<property name="objectStoreDir">${jboss.server.data.dir}/tx-object-store</property>
<subsystem xmlns="urn:jboss:domain:transactions:1.0">
<recovery-environment socket-binding="txn-recovery-environment"
status-socket-binding="txn-status-manager"/>
<core-environment socket-binding="txn-socket-process-id"/>
</subsystem>
Management APIs
• Command Line Interface (CLI)
• Remote Java API
• HTTP/JSON API
• GWT-based console
• JMX mapping
1st Class Components
JBoss Name Overload
• JBoss Application Server (the project)
• JBoss Company (jboss.com)
• JBoss Community (jboss.org)
• JBoss Projects (e.g. JBoss Cache)
• JBoss Product Line (EAP, SOA-P, etc.)
Why Rename JBoss?
V8 Recap*
WildFly 8 – Features*
• 100% Java EE7 certified (Web & Full profiles)
• plus CDI 1.2, WebSockets 1.1
• High Performance Web Server (Undertow)
• Port reduction (8080, 9990)
• Update Infrastructure
• Role Based Administration (RBAC)
• Audit Logging
*WildFly 8.0 Final – Feb/2014
EE7 Highlights
EE7 Highlights – New Techs
JSR-352 Batch Applications for the Java Platform
•Runtime & Artifact API, XML-based Job specification lang.
JSR-236 Concurrency Utilities for JavaEE
•Executor, Scheduled Executor, Thread Factory, Context
JSR-353 Java API for JSON Processing (JSON-P)
•Parse, transform and query JSON data
JSR-356 Web Sockets support
•Annotation driven endpoints and lifecycle callbacks
EE7 Highlights – Spec. Updates
JSR-345 EJB 3.2, plus Interceptors 1.2, Annotations 1.2
•Misc. improvements
JSR-340 Servlet 3.1
•Non-blocking I/O, HTTP upgrade, etc.
JSR-342 JMS 2.0
•Shared topic subs, delayed delivery, async send, etc.
JSR-344 JSF 2.2
•HTML 5, FaceFlows, Stateless Views, Resource lib contracts
JSR-322 JCA 1.7
•Activation name for msg endpoints (WTF?)
EE7 Highlights – Optional Techs
Removed in WildFly 8
•EJB 2.1 Entity Beans (CMP/BMP)
•JAX-RPC (API for XML-based RPC)
•JAXR (API for XML Registries)
•JSR-88 (Deployment API)
• it has re-surfaced in JSR 373 (JSR-77 successor)
JavaTM EE Management API 2.0 
New WebServer - Undertow
• Blocking / non-blocking NIO based APIs
• Composition/handler based architecture
• Lightweight & fully embeddable
• Supports WebSockets, including JSR-356
• Supports Servlet 3.1
• HTTP upgrade
http://undertow.io/
Undertow – Embedded Server
Port Reduction
• HTTP Upgrade allow us to reduce the number of ports
in the default installation to just 2:
• 8080 – for applications with JNDI and EJB multiplexed
• 9990 – for management, for both HTTP/JON & Native APIs
• The only overhead is the initial HTTP Upgrade
request/response.
Administrative Access Control
• Administrative users can be mapped to Roles
• Role = set of Permissions
• Permission:
• Action (access, read/write config, read/write runtime)
• Set of Constraints (target)
• Sensitive resource type, attribute or operation
• Sensitive data
• Audit Resource
• Application Resource
Roles
Monitor – reads non sensitive configuration and state
Operator – Monitor + start/stop server & queues
Maintainer – Operator + deploy Apps & Queues
Deployer – Maintainer + config Apps
Administrator – Maintainer + system config - audit logging
Auditor – Monitor + audit logging config
SuperUser - Everything
Administrative Audit Logging
• Logging of connection / authentication events
• Logging of management operations
• Log Message as JSON Records
• Audit Logging Handlers
• Local file
• Syslog (UDP / TCP / TLS)
V9 Update
WildFly 9 – Features*
• Core/Full Split and Servlet-only distribution
• Front-end load balancer with mod_cluster support
• Undertow HTTP/2 & SPDY support
• Graceful shutdown (suspend(timeout)/resume)
• Switching to the JDK ORB from JacORB
• Offline CLI Mode
• etc.
*WildFly 9.0 Final – Jul/2015
WildFly-Core
Base Runtime for WildFly server includes
• Modular class loading
• Modular Service Container
• Unified management, including domain mode
• Basic deployment architecture
• CLI for management
• Logging
• JMX
MSC
JBoss
Modules
DMR Controller Threads
Core Infrastructure
Server Controller Service
Deployers VFS Jandex
Reflect
Cache
Repository
WildFly-Web
• Servlet-Only distribution
• Undertow and Naming added
Include your own frameworks
WildFly distro extensions
WF-Full ~380 services
WF-Servlet distro extensions
WF-Servlet ~100 services
WF-Core distro extensions
WF-Core ~58 services
WildFly Swarm*
*WildFly broken apart
Microservices
Perfect Storm!
Applications &
Services
wildfly-swarm*
Turn your .war into a fat jar with just enough of the
WildFly Runtime to support your use case
• Include the wildfly-swarm-plugin in your pom.xml
• Declare any dependencies on:
Undertow, JAX-RS, Naming/JNDI, Transactions,
Messaging, Datasources, Logging, Weld/CDI, MSC Security
*http://wildfly.org/news/2015/05/05/WildFly-Swarm-Released/
wildfly-swarm
[ Write your own main()
to override default
configuration and
reference it in your
MANIFEST.MF ]
Voila!
java –jar myapp-swarm.jar
(boots in < 1sec)
V9 Update
(cont.)
WF/Undertow as Load Balancer
• Full Java solution controlled centrally
• Implements mod_cluster
• HTTP, HTTP/2, AJP
http://blog.eisele.net/2015/01/developer-interview-di-11-stuart-douglas-about-wildfly9-undertow.html
HTTP/2 (vs HTTP/v1.x)
Primary goal of HTTP/2 is to reduce latency and make
efficient use of the TCP connection.
Undertow HTTP/2 support
HTTP/2 characteristics
• Binary Framing
• Request/Response multiplexing
• Header compression (HPACK)
• Stream prioritization
• Server Push
• HTTP Upgrade or NPN/ALPN*
Undertow implements HTTP/2 (& SPDY)
*requires special JDK8 setup
JSR-369 Servlet 4.0
Brings HTTP/2 Support to Java EE8
• Server Push
• Stream Prioritization
• Request/Response Multiplexing
JEP 110: HTTP/2 Client
• Basic Protocol Support in Java SE 9
• new HTTP client API that implements HTTP/2 and
WebSocket, and can replace the legacy
HttpURLConnection API
http://stackoverflow.com/questions/10480122/difference-between-http-pipeling-and-http-multiplexing-with-spdy
Server Push with Undertow
http://undertow.io/blog/2015/03/25/Server-Push.html
or use the Undertow Learning Push Handler
• learns which requested resources are requested per
page and pushes them proactively
Graceful Shutdown
• Essentially suspend(timeout) / resume()
• Allow active sessions/requests/in-flight-tx to complete
• After suspend the server may be restarted
• Action per subsystem may vary
• Reject new requests (HTTP Error 503 - Service unavailable)
• Clustering could fail over sessions
• mod_cluster could notify load balancer
• …
V10 Update
Alpha1 – May/15th
Alpha2 – Jun/2nd
Alpha3 – Jun/16th
Alpha4 – Jun/30th
…bi-weekly
CR1 – Sep/2015
CR2 – Sep/2015
CR3 – Oct/2015
CR4 – Today?  We are Here
Final – Nov/2015
WF 10 – Roadmap
WF10 Features
• Requires Java 8+
• HornetQ  ActiveMQ Artemis
• Hibernate 5
• JMS Graceful Shutdown
• HA & MDB Singleton Deployments
• Improved UI for large domains
• Hierarchical Profiles
• Offline CLI for Domain Mode
• Server-side JavaScript support (Undertow.js)
with hot reloading
http://wildfly.org/downloads/
http://wildfly.org/joinus/

Contenu connexe

Tendances

Apache CloudStack Architecture by Alex Huang
Apache CloudStack Architecture by Alex HuangApache CloudStack Architecture by Alex Huang
Apache CloudStack Architecture by Alex Huang
buildacloud
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
Vadym Lotar
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump Analysis
Dmitry Buzdin
 

Tendances (20)

Liferay
LiferayLiferay
Liferay
 
Apache CloudStack Architecture by Alex Huang
Apache CloudStack Architecture by Alex HuangApache CloudStack Architecture by Alex Huang
Apache CloudStack Architecture by Alex Huang
 
Heap & thread dump
Heap & thread dumpHeap & thread dump
Heap & thread dump
 
Tomcat Server
Tomcat ServerTomcat Server
Tomcat Server
 
Enterprise java unit-1_chapter-3
Enterprise java unit-1_chapter-3Enterprise java unit-1_chapter-3
Enterprise java unit-1_chapter-3
 
Migrating to Java 11
Migrating to Java 11Migrating to Java 11
Migrating to Java 11
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Java Heap Dump Analysis Primer
Java Heap Dump Analysis PrimerJava Heap Dump Analysis Primer
Java Heap Dump Analysis Primer
 
vSAN architecture components
vSAN architecture componentsvSAN architecture components
vSAN architecture components
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introduction
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Spring Boot Interview Questions | Edureka
Spring Boot Interview Questions | EdurekaSpring Boot Interview Questions | Edureka
Spring Boot Interview Questions | Edureka
 
Java 9 New Features
Java 9 New FeaturesJava 9 New Features
Java 9 New Features
 
JBoss Application Server 7
JBoss Application Server 7JBoss Application Server 7
JBoss Application Server 7
 
Maven
MavenMaven
Maven
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump Analysis
 
Introduction to Node JS.pdf
Introduction to Node JS.pdfIntroduction to Node JS.pdf
Introduction to Node JS.pdf
 
Tomcat and apache httpd training
Tomcat and apache httpd trainingTomcat and apache httpd training
Tomcat and apache httpd training
 
What's new in Java 11
What's new in Java 11What's new in Java 11
What's new in Java 11
 

En vedette

Apresentação wild fly-semrevisao
Apresentação wild fly-semrevisaoApresentação wild fly-semrevisao
Apresentação wild fly-semrevisao
Rogerio Fontes
 

En vedette (20)

WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
 
JBoss EAP / WildFly, State of the Union
JBoss EAP / WildFly, State of the UnionJBoss EAP / WildFly, State of the Union
JBoss EAP / WildFly, State of the Union
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
WildFly BOF and V9 update @ Devoxx 2014
WildFly BOF and V9 update @ Devoxx 2014WildFly BOF and V9 update @ Devoxx 2014
WildFly BOF and V9 update @ Devoxx 2014
 
Desktop|Embedded Application API JSR
Desktop|Embedded Application API JSRDesktop|Embedded Application API JSR
Desktop|Embedded Application API JSR
 
Apresentação wild fly-semrevisao
Apresentação wild fly-semrevisaoApresentação wild fly-semrevisao
Apresentação wild fly-semrevisao
 
JBoss AS7 Reloaded
JBoss AS7 ReloadedJBoss AS7 Reloaded
JBoss AS7 Reloaded
 
Introduction to Role Based Administration in WildFly 8
Introduction to Role Based Administration in WildFly 8Introduction to Role Based Administration in WildFly 8
Introduction to Role Based Administration in WildFly 8
 
WildFly & WildFly Swarm
WildFly & WildFly SwarmWildFly & WildFly Swarm
WildFly & WildFly Swarm
 
Java micro-services
Java micro-servicesJava micro-services
Java micro-services
 
Productivity Tips for Java EE and Spring Developers
 Productivity Tips for Java EE and Spring Developers Productivity Tips for Java EE and Spring Developers
Productivity Tips for Java EE and Spring Developers
 
Introduction to Wildfly 8 - Marchioni
Introduction to Wildfly 8 -  MarchioniIntroduction to Wildfly 8 -  Marchioni
Introduction to Wildfly 8 - Marchioni
 
WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7
 
Security enforcement of Java Microservices with Apiman & Keycloak
Security enforcement of Java Microservices with Apiman & KeycloakSecurity enforcement of Java Microservices with Apiman & Keycloak
Security enforcement of Java Microservices with Apiman & Keycloak
 
JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.
 
Javantura v4 - (Spring)Boot your application on Red Hat middleware stack - Al...
Javantura v4 - (Spring)Boot your application on Red Hat middleware stack - Al...Javantura v4 - (Spring)Boot your application on Red Hat middleware stack - Al...
Javantura v4 - (Spring)Boot your application on Red Hat middleware stack - Al...
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
Javantura v4 - Keycloak – instant login for your app - Marko Štrukelj
Javantura v4 - Keycloak – instant login for your app - Marko ŠtrukeljJavantura v4 - Keycloak – instant login for your app - Marko Štrukelj
Javantura v4 - Keycloak – instant login for your app - Marko Štrukelj
 
Microservices Platforms - Which is Best?
Microservices Platforms - Which is Best?Microservices Platforms - Which is Best?
Microservices Platforms - Which is Best?
 

Similaire à WildFly AppServer - State of the Union

Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1
WSO2
 
As7 web services - JUG Milan April 2012
As7 web services - JUG Milan April 2012As7 web services - JUG Milan April 2012
As7 web services - JUG Milan April 2012
alepalin
 
Kabir Khan on AS6 at JBUG.be
Kabir Khan on AS6 at JBUG.be Kabir Khan on AS6 at JBUG.be
Kabir Khan on AS6 at JBUG.be
Andries Inzé
 
JUDCon London 2011 - Elastic SOA on the Cloud, Steve Millidge
JUDCon London 2011 - Elastic SOA on the Cloud, Steve MillidgeJUDCon London 2011 - Elastic SOA on the Cloud, Steve Millidge
JUDCon London 2011 - Elastic SOA on the Cloud, Steve Millidge
C2B2 Consulting
 
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Software Guru
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
Ludovic Champenois
 
One daytalk hbraun_oct2011
One daytalk hbraun_oct2011One daytalk hbraun_oct2011
One daytalk hbraun_oct2011
hbraun
 
Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010
Rohit Kelapure
 

Similaire à WildFly AppServer - State of the Union (20)

Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann
 
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUGOverview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUG
 
AAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
AAI-1304 Technical Deep-Dive into IBM WebSphere LibertyAAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
AAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
 
Enterprise service bus part 2
Enterprise service bus part 2Enterprise service bus part 2
Enterprise service bus part 2
 
Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 Presentation
 
As7 web services - JUG Milan April 2012
As7 web services - JUG Milan April 2012As7 web services - JUG Milan April 2012
As7 web services - JUG Milan April 2012
 
Kabir Khan on AS6 at JBUG.be
Kabir Khan on AS6 at JBUG.be Kabir Khan on AS6 at JBUG.be
Kabir Khan on AS6 at JBUG.be
 
SHARE 2014, Pittsburgh CICS and Liberty applications
SHARE 2014, Pittsburgh CICS and Liberty applicationsSHARE 2014, Pittsburgh CICS and Liberty applications
SHARE 2014, Pittsburgh CICS and Liberty applications
 
SHARE 2014, Pittsburgh CICS and Liberty applications
SHARE 2014, Pittsburgh CICS and Liberty applicationsSHARE 2014, Pittsburgh CICS and Liberty applications
SHARE 2014, Pittsburgh CICS and Liberty applications
 
JUDCon London 2011 - Elastic SOA on the Cloud, Steve Millidge
JUDCon London 2011 - Elastic SOA on the Cloud, Steve MillidgeJUDCon London 2011 - Elastic SOA on the Cloud, Steve Millidge
JUDCon London 2011 - Elastic SOA on the Cloud, Steve Millidge
 
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
 
Liberty Deep Dive
Liberty Deep DiveLiberty Deep Dive
Liberty Deep Dive
 
One daytalk hbraun_oct2011
One daytalk hbraun_oct2011One daytalk hbraun_oct2011
One daytalk hbraun_oct2011
 
12 Things About WebLogic 12.1.3 #oow2014 #otnla15
12 Things About WebLogic 12.1.3 #oow2014 #otnla1512 Things About WebLogic 12.1.3 #oow2014 #otnla15
12 Things About WebLogic 12.1.3 #oow2014 #otnla15
 
Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010
 
Oracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy featuresOracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy features
 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
 
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
 

Plus de Dimitris Andreadis (7)

Turn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly SwarmTurn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly Swarm
 
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
 
Devoxx 2013, WildFly BOF
Devoxx 2013, WildFly BOFDevoxx 2013, WildFly BOF
Devoxx 2013, WildFly BOF
 
2012 Devoxx - JBossAS BOF
2012 Devoxx - JBossAS BOF2012 Devoxx - JBossAS BOF
2012 Devoxx - JBossAS BOF
 
jboss.org-jboss.com
jboss.org-jboss.comjboss.org-jboss.com
jboss.org-jboss.com
 
7 secrets of successful opensource developers
7 secrets of successful opensource developers7 secrets of successful opensource developers
7 secrets of successful opensource developers
 
JBoss AS / EAP and Java EE6
JBoss AS / EAP and Java EE6JBoss AS / EAP and Java EE6
JBoss AS / EAP and Java EE6
 

Dernier

Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Dernier (20)

WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - KanchanaWSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - Kanchana
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 

WildFly AppServer - State of the Union

  • 1. WildFly App Server State of the Union Dimitris Andreadis Sr. Engineering Mgr Red Hat JBoss EAP / WildFly twitter: @dandreadis
  • 2. How it all started? (for me*) *http://dandreadis.blogspot.ch/2014/10/10-years-on-red-pill.html
  • 3. JBoss AS/EAP, WildFly Fan(atic) •2001, JBoss User •2003, JBoss Committer •2004, JBoss Full-time Core Developer •2006, JBoss AS Lead (v3.2.8+, v4.0.4+, v4.2.x, 5.0.x) •2009, JBoss AS Engineering Manager •2013, JBoss EAP/WildFly Sr. Engineering Manager And before JBoss? •7y experience in distributed systems (telcos, NMS/OSS) •BSc/MSc Computer Science (Athens/Dublin) about.me/dandreadis
  • 4. Agenda • WildFly pre-History • WildFly V8 Recap • WildFly V9 Update • WildFly Swarm & V10
  • 5. WildFly* pre-History *the server once called JBoss Application Server
  • 6. JBoss AS Timeline 20072006200520042003 JBossVersions Time JBoss AS 4.0.0 – 4.0.5 JBoss AS 4.2.0 – 4.2.3 JBoss AS 5: 5.0.0.GA, 5.0.1.GA JBoss AS 3.2.0 – 3.2.8 JBoss AS 5.1 20092008 J2EE 1.3, JDK 1.3 JMX MicroKernel Architecture J2EE 1.4 certification JTS, JDK 1.4 JEE 5.0 compatible, not certified (95% pass) JDK5.0, EAP 4.2 basis JavaEE 5 certification, JDK5 & 6 MicroContainer Architecture 2010 2011 JBoss AS 6.0, 6.1 JBoss AS 7.0, 7.0.1, 7.0.2 JavaEE 6 Web Profile, JDK6 JavaEE 6 Web Profile, JDK6/JDK7 Modular Service Container Architecture 2012 JBoss AS 7.1, 7.1.1 JavaEE 6 Full Profile, JDK6/JDK7 Complete Clustering Support, EAP6 basis JSF-Based Console, EAP5 basis Red Hat Acquisition
  • 7. Project vs EE spec • JBoss AS 2  J2EE 1.2 • JBoss AS 3  J2EE 1.3 • JBoss AS 4  J2EE 1.4 • JBoss AS 5  Java EE 5 • JBoss AS 6 , AS7  Java EE 6 • WildFly 8, 9, 10  Java EE 7
  • 8. Project vs EE spec vs Product • JBoss AS 2  J2EE 1.2 • JBoss AS 3  J2EE 1.3 • JBoss AS 4  J2EE 1.4  EAP 4 • JBoss AS 5  Java EE 5  EAP 5 • JBoss AS 6 , AS7  Java EE 6  EAP 6 • WildFly 8, 9, 10  Java EE 7  EAP 7 *Red Hat JBoss Enterprise Application Platform (EAP)
  • 10. JBoss AS Kernel Taxonomy • JBoss AS 2.x, 3.x, 4.x • JBoss JMX MicroKernel • JBoss AS 5.x, 6.x • JBoss MC - MicroContainer • JBoss AS7.x, WildFly 8.x, 9, 10 • JBoss MSC - Modular Service Container
  • 11. AS7 Innovations - MSC Modular Services Container (MSC) • Small, lightweight, and efficient • Highly concurrent & scalable state machine • Multiple startup modes •Active, Passive, On-Demand, Lazy, Never Concurrent Service Container Service Controller Service Registry Service Builder Service Deps Value Listeners Injectors
  • 12. Innovations – JBoss Modules Small, lightweight, and efficient •Highly concurrent class loading •Fast with O(1) dependency resolution “Pure” modular class loading •Modules only see what they import •Including JDK classes External module definitions •Don’t have to break open the JAR
  • 13. Modular Class Loading • A graph of Class Loaders, not a tree • Modules delegate to one another as peers • A module imports modules it directly uses • Transitive dependencies are hidden, by default • Different module versions may co-exist
  • 14. modulesorghornetqmainmodule.xml <module xmlns="urn:jboss:module:1.0" name="org.hornetq"> <resources> <resource-root path="hornetq-core-2.2.10.Final.jar"/> <resource-root path="hornetq-jms-2.2.10.Final.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.jms.api"/> <module name="javax.resource.api"/> <module name="org.jboss.jts"/> <module name="org.jboss.netty"/> </dependencies> </module>
  • 19. @#$% fast: How is it done? • Concurrent startup/deployments • Faster resource lookup/classloading • Annotation indexing • Caching of reflection metadata • Lazy loading of (some) services • StAX based descriptor parsing • Starting from scratch 
  • 20. Two Operational Modes Standalone •Traditional JBoss single JVM server •Management facilities IN-VM •No lifecycle management (only shutdown) Domain •Multi-JVM, multi-server model •Management coordinated by Domain Controller Process •Multiple server instances (JVMs) per Host •Full lifecycle managed by Process Controller
  • 22. User-focused Configuration <bean name="TransactionManager" class="com.arjuna.ats.jbossatx.jta.TransactionManagerService"> <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss:service=TransactionManager", exposedInterface=com.arjuna.ats.jbossatx.jta.TransactionManagerServiceMBean.class, registerDirectly=true)</annotation> <annotation>@org.jboss.managed.api.annotation.ManagementObject(name="TransactionManager",componentType=@org.jb oss.managed.api.annotation.ManagementComponent(type = "MCBean", subtype = "JTA"),targetInterface=com.arjuna.ats.jbossatx.jta.TransactionManagerServiceMBean.class) </annotation> <property name="transactionTimeout">300</property> <property name="objectStoreDir">${jboss.server.data.dir}/tx-object-store</property> <subsystem xmlns="urn:jboss:domain:transactions:1.0"> <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> <core-environment socket-binding="txn-socket-process-id"/> </subsystem>
  • 23. Management APIs • Command Line Interface (CLI) • Remote Java API • HTTP/JSON API • GWT-based console • JMX mapping
  • 25. JBoss Name Overload • JBoss Application Server (the project) • JBoss Company (jboss.com) • JBoss Community (jboss.org) • JBoss Projects (e.g. JBoss Cache) • JBoss Product Line (EAP, SOA-P, etc.) Why Rename JBoss?
  • 26.
  • 28. WildFly 8 – Features* • 100% Java EE7 certified (Web & Full profiles) • plus CDI 1.2, WebSockets 1.1 • High Performance Web Server (Undertow) • Port reduction (8080, 9990) • Update Infrastructure • Role Based Administration (RBAC) • Audit Logging *WildFly 8.0 Final – Feb/2014
  • 30. EE7 Highlights – New Techs JSR-352 Batch Applications for the Java Platform •Runtime & Artifact API, XML-based Job specification lang. JSR-236 Concurrency Utilities for JavaEE •Executor, Scheduled Executor, Thread Factory, Context JSR-353 Java API for JSON Processing (JSON-P) •Parse, transform and query JSON data JSR-356 Web Sockets support •Annotation driven endpoints and lifecycle callbacks
  • 31. EE7 Highlights – Spec. Updates JSR-345 EJB 3.2, plus Interceptors 1.2, Annotations 1.2 •Misc. improvements JSR-340 Servlet 3.1 •Non-blocking I/O, HTTP upgrade, etc. JSR-342 JMS 2.0 •Shared topic subs, delayed delivery, async send, etc. JSR-344 JSF 2.2 •HTML 5, FaceFlows, Stateless Views, Resource lib contracts JSR-322 JCA 1.7 •Activation name for msg endpoints (WTF?)
  • 32. EE7 Highlights – Optional Techs Removed in WildFly 8 •EJB 2.1 Entity Beans (CMP/BMP) •JAX-RPC (API for XML-based RPC) •JAXR (API for XML Registries) •JSR-88 (Deployment API) • it has re-surfaced in JSR 373 (JSR-77 successor) JavaTM EE Management API 2.0 
  • 33. New WebServer - Undertow • Blocking / non-blocking NIO based APIs • Composition/handler based architecture • Lightweight & fully embeddable • Supports WebSockets, including JSR-356 • Supports Servlet 3.1 • HTTP upgrade http://undertow.io/
  • 35. Port Reduction • HTTP Upgrade allow us to reduce the number of ports in the default installation to just 2: • 8080 – for applications with JNDI and EJB multiplexed • 9990 – for management, for both HTTP/JON & Native APIs • The only overhead is the initial HTTP Upgrade request/response.
  • 36. Administrative Access Control • Administrative users can be mapped to Roles • Role = set of Permissions • Permission: • Action (access, read/write config, read/write runtime) • Set of Constraints (target) • Sensitive resource type, attribute or operation • Sensitive data • Audit Resource • Application Resource
  • 37. Roles Monitor – reads non sensitive configuration and state Operator – Monitor + start/stop server & queues Maintainer – Operator + deploy Apps & Queues Deployer – Maintainer + config Apps Administrator – Maintainer + system config - audit logging Auditor – Monitor + audit logging config SuperUser - Everything
  • 38. Administrative Audit Logging • Logging of connection / authentication events • Logging of management operations • Log Message as JSON Records • Audit Logging Handlers • Local file • Syslog (UDP / TCP / TLS)
  • 40. WildFly 9 – Features* • Core/Full Split and Servlet-only distribution • Front-end load balancer with mod_cluster support • Undertow HTTP/2 & SPDY support • Graceful shutdown (suspend(timeout)/resume) • Switching to the JDK ORB from JacORB • Offline CLI Mode • etc. *WildFly 9.0 Final – Jul/2015
  • 41. WildFly-Core Base Runtime for WildFly server includes • Modular class loading • Modular Service Container • Unified management, including domain mode • Basic deployment architecture • CLI for management • Logging • JMX MSC JBoss Modules DMR Controller Threads Core Infrastructure Server Controller Service Deployers VFS Jandex Reflect Cache Repository
  • 42. WildFly-Web • Servlet-Only distribution • Undertow and Naming added Include your own frameworks
  • 46.
  • 50. wildfly-swarm* Turn your .war into a fat jar with just enough of the WildFly Runtime to support your use case • Include the wildfly-swarm-plugin in your pom.xml • Declare any dependencies on: Undertow, JAX-RS, Naming/JNDI, Transactions, Messaging, Datasources, Logging, Weld/CDI, MSC Security *http://wildfly.org/news/2015/05/05/WildFly-Swarm-Released/
  • 51. wildfly-swarm [ Write your own main() to override default configuration and reference it in your MANIFEST.MF ] Voila! java –jar myapp-swarm.jar (boots in < 1sec)
  • 53. WF/Undertow as Load Balancer • Full Java solution controlled centrally • Implements mod_cluster • HTTP, HTTP/2, AJP http://blog.eisele.net/2015/01/developer-interview-di-11-stuart-douglas-about-wildfly9-undertow.html
  • 54. HTTP/2 (vs HTTP/v1.x) Primary goal of HTTP/2 is to reduce latency and make efficient use of the TCP connection.
  • 55. Undertow HTTP/2 support HTTP/2 characteristics • Binary Framing • Request/Response multiplexing • Header compression (HPACK) • Stream prioritization • Server Push • HTTP Upgrade or NPN/ALPN* Undertow implements HTTP/2 (& SPDY) *requires special JDK8 setup
  • 56. JSR-369 Servlet 4.0 Brings HTTP/2 Support to Java EE8 • Server Push • Stream Prioritization • Request/Response Multiplexing JEP 110: HTTP/2 Client • Basic Protocol Support in Java SE 9 • new HTTP client API that implements HTTP/2 and WebSocket, and can replace the legacy HttpURLConnection API http://stackoverflow.com/questions/10480122/difference-between-http-pipeling-and-http-multiplexing-with-spdy
  • 57. Server Push with Undertow http://undertow.io/blog/2015/03/25/Server-Push.html or use the Undertow Learning Push Handler • learns which requested resources are requested per page and pushes them proactively
  • 58. Graceful Shutdown • Essentially suspend(timeout) / resume() • Allow active sessions/requests/in-flight-tx to complete • After suspend the server may be restarted • Action per subsystem may vary • Reject new requests (HTTP Error 503 - Service unavailable) • Clustering could fail over sessions • mod_cluster could notify load balancer • …
  • 60. Alpha1 – May/15th Alpha2 – Jun/2nd Alpha3 – Jun/16th Alpha4 – Jun/30th …bi-weekly CR1 – Sep/2015 CR2 – Sep/2015 CR3 – Oct/2015 CR4 – Today?  We are Here Final – Nov/2015 WF 10 – Roadmap
  • 61. WF10 Features • Requires Java 8+ • HornetQ  ActiveMQ Artemis • Hibernate 5 • JMS Graceful Shutdown • HA & MDB Singleton Deployments • Improved UI for large domains • Hierarchical Profiles • Offline CLI for Domain Mode • Server-side JavaScript support (Undertow.js) with hot reloading