1. Jasoct
AS Project Lead
May 4, 2011
JBoss EAP / WildFly
State of the Union
Dimitris Andreadis
Engineering Manager
JBoss EAP/WildFly
2. About Me
JBoss AS 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 Engineering Manager
And before JBoss?
•7y experience in distributed systems (telcos, NMS/OSS)
•BSc/MSc Computer Science (Athens/Dublin)
dandreadis.blogspot.com
3. Agenda
• JBoss History
• The Path to EE6
• JBoss AS 7
• The Big Rename
• WildFly 8 and EE7
• JBoss EAP 6
4. 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
6. The Path to EE6
•JBoss AS 6.0
• Deliver faster on Java EE6
• Baking time for EE subsystems
• Measure interest in EE profiles
• Stepping stone for AS7
•New Stuff
• HornetQ (Messaging)
• Infinispan (Caching)
• Apache CXF (Web Services)
• Embedded Jopr Console
• mod_cluster
8. A hard look at the mirror
• Typical Pain Points
• Excess baggage (legacy subsystems and abstractions)
• Boot time & memory footprint
• Embeadability/testability
• Administration options
• Modularity
• It’s “free and it doesn’t suck”
not enough anymore
10. Getting our Mojo back!
• Major Goals
• Make it Smaller, Faster
• Improve Manageability
• Simplify Configuration
• Clean things up!
• Remove abstraction layers
• Remove legacy stuff
• Modularize
13. *A blazingly fast modular lightweight elegantly administrable
compliant application server with easy testing facilities – Carlo De Wolf, 2011
JBoss AS 7
14. JBoss AS 7 releases
• AS 7.0 – released Jul/2011
• EE6 – Web Profile (+JCA, +JAX-RS) certified
• AS 7.0.1 – released Aug/2011
• MDB support, JSR-88, JPA w. older Hibernate 3
• AS 7.0.2 – released Sep/2011
• JSF 2.1, @Asynchronous, PicketLink SSO, etc.
• AS 7.1 – released Feb/2012
• Full EE6, Clustering, etc.
• AS 7.1.1 – released Mar/2012
15. AS7 Key Features
• Fast and Lightweight
• Modular, OSGi enabled
• Unified, user focused configuration
• Multiple management interfaces
• Support for multi-node management
16. AS7 Architecture
MSC
JBoss
Modules
DMR Controller Threads
Core Infrastructure
Server Controller Service
Deployers VFS Jandex Reflect Cache Repository
Subsystems
Connector
Datasource
EE
EJB3
JMX
JPA
Messaging
Naming
OSGi
Remoting
SAR
Security
FSSecanner
Transaction
Web
WS
Weld
JAX-RS
17. JBoss 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
• JBoss MSC - Modular Service Container
18. Key attributes of MSC
Small, lightweight, and efficient
Highly concurrent & scalable state machine
Services are primarily interface based
Only two states, Up & Down
Multiple startup modes
•Active, Passive, On-Demand, Lazy, Never
Concurrent Service Container
Service Controller
Service Registry
Service Builder
Service Deps Value Listeners Injectors
25. • Issues
• All jars always loaded, whether used or no
• Version conflicts, especially with servers libs
• Increased lookup/load time
• Hard to debug (big ball of mud)
• JBoss AS 5 introduced
module-like capabilities
• jboss-classloading.xml
Hierarchical Class Loading
26. 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
27. 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
32. 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
37. Management APIs
• Command Line Interface (CLI)
• Remote Java API
• HTTP/JSON API
• GWT-based console
• JMX mapping
38. Dynamic Model Representation (DMR)
• Central Detyped Management API
•All management operations operate with/on DMR
•Strictly backwards compatible
• Represents simple and complex types
•int, long, big int, double, big dec, boolean, string, bytes, list,
object, property, expression
• Auto-converts like dynamic languages
• Self describing
• Convertible to/from JSON
• Also has a defined binary protocol (optionally b64)
51. WildFly 8 Goals
• Java EE7
• Single Instance Patching
• Role Based Access Control (RBAC)
• New Web Container (Undertow)
• Runtime Performance Improvements
52. Java EE7 Support
• JIRA Tracker
• https://issues.jboss.org/browse/WFLY-469
• 31 out of 33 EE7 updates complete
• Pending
• JSR-353 Batch Application API support
• JSR-196 Auth. API for Containers (JASPIC 1.1) support
53. EE7 Highlights – New Technologies
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
55. EE7 Highlights – Optional Technologies
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)
56. Single Instance Patching – Work in Progress
• WildFly/EAP is used on its own or as the base for
other projects/products (e.g. SwitchYard/SOA-P)
• Patching allows updating of libraries and configuration
files in an installation (a.k.a. identity)
• Patches come in the form of .zip bundles containing
updates and metadata.
• Multiple one-off patches can be applied but are
invalidated by the next point/CP release.
• Rollbacks are possible.
57. Administrative Access Control (RBAC)
• 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
64. The Community JBoss AS (now WildFly)
vs. the Enterprise Application Platform (EAP)
• Community Project (WildFly)
- What used to be JBoss AS
- Sponsored by JBoss/Red Hat
- Allow innovation at a faster pace
• Enterprise Application Platform (EAP)
- Forks the community project at stable points
- Integrates with JBoss Developer Studio / JBoss Operations Network
- Rigorously tested (performance, scalability, SpecJ, etc.)
- Certified on multiple OS, JVM, DBs combinations
- Cumulative Patch cycles
- Supported for 5 + 2 years.