+ All Categories
Home > Documents > Wild(Fly) far and away...• JBoss AS 6 , AS7 Java EE 6 • WildFly 8, 9, 10 Java EE 7 . Project vs...

Wild(Fly) far and away...• JBoss AS 6 , AS7 Java EE 6 • WildFly 8, 9, 10 Java EE 7 . Project vs...

Date post: 01-May-2021
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
75
Jasoct AS Project Lead May 4, 2011 Wild(Fly) far and away The evolution of the JBoss Application Server Dimitris Andreadis Sr. Engineering Manager Red Hat JBoss EAP/WildFly twitter: @dandreadis
Transcript
Page 1: Wild(Fly) far and away...• 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

Jasoct AS Project Lead May 4, 2011

Wild(Fly) far and away The evolution of the JBoss Application Server Dimitris Andreadis Sr. Engineering Manager Red Hat JBoss EAP/WildFly

twitter: @dandreadis

Page 2: Wild(Fly) far and away...• 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

How it all started? (for me*)

*http://dandreadis.blogspot.ch/2014/10/10-years-on-red-pill.html

Page 3: Wild(Fly) far and away...• 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

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

Page 4: Wild(Fly) far and away...• 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

Agenda

• Enterprise Java

• JBoss AS History

• WildFly Update

Page 5: Wild(Fly) far and away...• 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

Enterprise Java

Page 6: Wild(Fly) far and away...• 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

Application Servers

• Provide a runtime for mission-critical applications

• Solve the Many (clients) to Few (resources) problem

• User code doesn't have to deal with

• Security

• Transactions

• Threading

• Pooling

• Caching

• Connectors

• Messaging

• Clustering

• …

Page 7: Wild(Fly) far and away...• 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

J2EE Timeline

• JPE (May 1998)

• Java Professional Edition project announced at Sun

• J2EE 1.2 (Dec 1999)

• JNDI, Servlet, JSP, EJB, JMS, JTA, JDBC, RMI-IIOP, etc.

• J2EE 1.3 (Sep 2001)

• JCA, JSTL, JAAS, (EJB 2, Servlet 2.3, JSP 1.2, JDBC 2)

• J2EE 1.4 (Nov 2003)

• JFS, JAXP, JAX-RPC, JAXR, JMX, (EJB 2.1, Servlet 2.4, JSP 2.0, JCA 1.5, etc.)

Page 8: Wild(Fly) far and away...• 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

Java EE Timeline

• Java EE 5 (May 2006)

• Annotations based EJB3/JPA, JAX-WS, SAAJ, …

• Java EE 6 (Dec 2009)

• JAX-RS, CDI, Bean Validation, Managed Beans, Interceptors, Web-Profile, pruning process

• Java EE 7 (Jun 2013)

• WebSockets, JSON, Async Servlet, NIO, Batch, Concurrency utilities, JMS 2, JDBC 4, (-CMP, -JSR88), etc.

• Java EE 8 (WIP, expected 2017)

• HTTP/2, SSE, JCache, JSON-B, MVC (-EJB 2, - IIOP), etc.

Page 9: Wild(Fly) far and away...• 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

Java EE Value Proposition

• Comprehensive set of Standard APIs

• Implementations to backup those APIs

• Extensively Tested & Certified to work together

• Backward & Forward Compatibility guarantees

• Reasonable Portability across vendors

Page 10: Wild(Fly) far and away...• 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

Java EE Concerns

• Memory and Disk Footprint

• Container Complexity

• Start-up Speed

• Testability

Page 11: Wild(Fly) far and away...• 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

JBoss AS History

Page 12: Wild(Fly) far and away...• 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

(E)JBoss

• An Open Source J2EE* Server

• Founded by Marc Fleury in 1999

• Backed by a community of developers

• Yet Another Java AppServer (out of 30+)

*J2EE -> Java EE == Java Enterprise Edition

Page 13: Wild(Fly) far and away...• 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

What made JBoss special?

• Open Source

• Commercial Servers at $10k - $100k+

• LGPL licensed

• Freely Use/Distribute/Embed

• Change JBoss => contribute changes back

• Developer friendly

• Easy installation : unzip and run!

• Hot deployment, no pre-compilation steps, etc.

• Innovative design

• Lightweight, modular, dynamic

Page 14: Wild(Fly) far and away...• 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

What made JBoss special?

• Open Source

• Commercial Servers at $10k - $100k+

• LGPL licensed

• Freely Use/Distribute/Embed

• Change JBoss => contribute changes back

• Developer friendly

• Easy installation : unzip and run!

• Hot deployment, no pre-compilation steps, etc.

• Innovative design

• Lightweight, modular, dynamic

*http://burrsutter.blogspot.ch/2007/07/beginning.html

Page 15: Wild(Fly) far and away...• 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

Architectural Innovations

The JBoss MicroKernel

• A lightweight component framework that wires together a set of Services

• Services are de-coupled, invocations are routed through an internal bus

Page 16: Wild(Fly) far and away...• 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

Architectural Innovations

Aspect Oriented Design (since 2001!)

• Interceptor chain created at run-time using Dynamic Proxies

Page 17: Wild(Fly) far and away...• 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

Architectural Innovations

Instant Clustering

• Nodes discover each other using multicast

Page 18: Wild(Fly) far and away...• 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

JBoss AS Timeline

2007 2006 2005 2004 2003

JB

oss V

ers

ions

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

2009 2008

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

Page 19: Wild(Fly) far and away...• 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

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

Page 20: Wild(Fly) far and away...• 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

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)

Page 21: Wild(Fly) far and away...• 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

WildFly vs JBoss EAP

Page 22: Wild(Fly) far and away...• 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

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

Page 23: Wild(Fly) far and away...• 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

A hard look at the mirror (2010)

• 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

Page 24: Wild(Fly) far and away...• 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

Getting our Mojo back!

• Major Goals

• Make it Smaller, Faster

• Improve Manageability

• Simplify Configuration

• Clean things up!

• Remove abstraction layers

• Remove legacy stuff

• Modularize

Page 25: Wild(Fly) far and away...• 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
Page 26: Wild(Fly) far and away...• 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
Page 27: Wild(Fly) far and away...• 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

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

Page 28: Wild(Fly) far and away...• 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

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

Page 29: Wild(Fly) far and away...• 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

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

Page 30: Wild(Fly) far and away...• 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

modules\org\hornetq\main\module.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>

Page 31: Wild(Fly) far and away...• 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

So What?

Page 32: Wild(Fly) far and away...• 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

#@*%ing fast!

http://community.jboss.org/wiki/AS7StartupTimeShowdown

Page 33: Wild(Fly) far and away...• 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

Boot Time Results

Page 34: Wild(Fly) far and away...• 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

Memory Comparison

Page 35: Wild(Fly) far and away...• 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

@#$% 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

Page 36: Wild(Fly) far and away...• 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

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

Page 37: Wild(Fly) far and away...• 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

Domain Mode

Page 38: Wild(Fly) far and away...• 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

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.jboss.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>

Page 39: Wild(Fly) far and away...• 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

Management APIs

• Command Line Interface (CLI)

• Remote Java API

• HTTP/JSON API

• GWT-based console

• JMX mapping

Page 40: Wild(Fly) far and away...• 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

1st Class Components

Page 41: Wild(Fly) far and away...• 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

WildFly Update

Page 42: Wild(Fly) far and away...• 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

• 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.)

JBoss Name Overload

Page 43: Wild(Fly) far and away...• 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
Page 44: Wild(Fly) far and away...• 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

V8 Recap

Page 45: Wild(Fly) far and away...• 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

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

Page 46: Wild(Fly) far and away...• 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

EE7 Highlights

Page 47: Wild(Fly) far and away...• 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

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

Page 48: Wild(Fly) far and away...• 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

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?)

Page 49: Wild(Fly) far and away...• 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

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

Page 50: Wild(Fly) far and away...• 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

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/

Page 51: Wild(Fly) far and away...• 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

Undertow – Embedded Server

Page 52: Wild(Fly) far and away...• 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

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.

Page 53: Wild(Fly) far and away...• 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

Updating an installation

• Preserves configuration and deployments

• Can be applied offline or on a running server

./bin/jboss-cli.sh

[disconnected /] patch apply /wildfly-8.2.0.Final.patch

[disconnected /] quit

patch rollback --reset-configuration=true

patch --help

Page 54: Wild(Fly) far and away...• 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

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

Page 55: Wild(Fly) far and away...• 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

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

Page 56: Wild(Fly) far and away...• 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

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)

Page 57: Wild(Fly) far and away...• 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

V9 Update

Page 58: Wild(Fly) far and away...• 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

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

Page 59: Wild(Fly) far and away...• 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

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

Page 60: Wild(Fly) far and away...• 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

WildFly-Web

• Servlet-Only distribution

• Undertow and Naming added

Include your own frameworks

Page 61: Wild(Fly) far and away...• 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

WildFly distro extensions

WF-Full ~380 services

Page 62: Wild(Fly) far and away...• 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

WF-Servlet distro extensions

WF-Servlet ~100 services

Page 63: Wild(Fly) far and away...• 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

WF-Core distro extensions

WF-Core ~58 services

Page 64: Wild(Fly) far and away...• 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

Experimental: 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/

Page 65: Wild(Fly) far and away...• 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

Experimental: 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)

Page 66: Wild(Fly) far and away...• 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

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

Page 67: Wild(Fly) far and away...• 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

HTTP/2 (vs HTTP/v1.x)

Primary goal of HTTP/2 is to reduce latency and make efficient use of the TCP connection.

Page 68: Wild(Fly) far and away...• 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

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

Page 69: Wild(Fly) far and away...• 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

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

Page 70: Wild(Fly) far and away...• 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

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

Page 71: Wild(Fly) far and away...• 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

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

• …

Page 72: Wild(Fly) far and away...• 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

V10 Update

Page 73: Wild(Fly) far and away...• 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

Alpha1 – May/15th

Alpha2 – Jun/2nd

Alpha3 – Jun/16th

Alpha4 – Jun/30th

…bi-weekly

CR1 – Sep/2015 We are Here

CR2 – Sep/2015

Final – Oct/2015

WF 10 – Roadmap

Page 74: Wild(Fly) far and away...• 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

WF10 Features

• WildFly Core v2

• Require Java 8+

• HornetQ ActiveMQ Artemis

• JMS Graceful Shutdown

• HA Singleton Deployments

• Improved UI for large domains

• Hierarchical Profiles

• Offline CLI for Domain Mode

• Server-side JavaScript support (Undertow.js)

Page 75: Wild(Fly) far and away...• 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

http://wildfly.org/joinus/


Recommended