WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.

4,386 views

Published on

WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,386
On SlideShare
0
From Embeds
0
Number of Embeds
2,351
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.

  1. 1. Jasoct AS Project Lead May 4, 2011 WildFly State of the Union Dimitris Andreadis Sr. Engineering Manager Red Hat JBoss EAP/WildFly twitter: @dandreadis
  2. 2. Agenda • JBoss AS History • WildFly 8 Recap • WildFly 9 Update • The Road Ahead
  3. 3. 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
  4. 4. 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
  5. 5. 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)
  6. 6. WildFly vs JBoss EAP https://access.redhat.com/support/policy/updates/jboss_notes/
  7. 7. 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 • JBoss MSC - Modular Service Container
  8. 8. V8 Recap
  9. 9. 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
  10. 10. EE7 Highlights
  11. 11. 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
  12. 12. 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?)
  13. 13. 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 
  14. 14. 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/
  15. 15. Undertow – Embedded Server
  16. 16. 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.
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. 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)
  21. 21. V9 Update
  22. 22. Alpha – Sep/2014 Beta – Mar/2015 CR1 – May/2015 CR2 – May  We are Here • Final touches Final – May/June! • Yuppie!
  23. 23. New Features in WildFly 9 • 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.
  24. 24. WildFly-Core Project/Distro Why? • WildFly codebase larger than 1M LOC • Base testsuite takes +2h to run • Hard to consume WildFly piecemeal wildfly/wildfly-core · GitHub
  25. 25. 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
  26. 26. WildFly-Web • Servlet-Only distribution • Undertow and Naming added Include your own frameworks
  27. 27. WildFly distro extensions WF-Full ~380 services
  28. 28. WF-Servlet distro extensions WF-Servlet ~100 services
  29. 29. WF-Core distro extensions WF-Core ~58 services
  30. 30. Feature Packs Server extensions • Modules + Configuration Snippets + other content • Dependencies on other features and modules • Build by maven plugin based on configuration file • With dependencies checking during build A provisioning tool assembles features packs into a server, with overrides and config changes.
  31. 31. Capabilities & Requirements MESSAGING Capabilities •BASE -- core messaging/JMS functionality • Requires: SECURITY:SECURITY-DOMAIN, JCA:BASE, CDI:BASE, TRANSACTIONS:TRANSACTION- MANAGER, NAMING:BASE •CLUSTERED -- clustered messaging • Requires: JGROUPS:BASE (optional) •HTTP-UPGRADE -- JMS multiplexing over HTTP • Requires: UNDERTOW:HTTP-UPGRADE
  32. 32. 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/
  33. 33. 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)
  34. 34. 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
  35. 35. HTTP/2 (vs HTTP/v1.x) Primary goal of HTTP/2 is to reduce latency and make efficient use of the TCP connection.
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 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 • …
  40. 40. ORB Switch • Java EE requires deep IIOP/CORBA integration • JBoss/WildFly was always based on JacORB • Great ORB but JVM ORB interop is challenging • Switched to the OpenJDK ORB to • Pool resources with other vendors • Reduce Java EE RI interop issues
  41. 41. Offline CLI • Configure a server, without the server “running” • Similar to admin-only mode, without any ports bound • Implemented by embedding the server in the CLI • CLI is also embeddable $ bin/jboss-cli.sh [disconnected /] embed-server --std-out=echo 12:10:15,300 INFO [org.jboss.modules] (main) JBoss Mo dules version 1.4.1.Final … (server boots up) https://developer.jboss.org/wiki/OfflineCLIWork
  42. 42. Misc. WF 9 Features • Log files appear as resources and can be downloaded • JCA/IronJacamar Tracer module • JGroups is now a fully managed resource • Infinispan caches can share JGroups Channels using the FORK protocol • Web Console • Improved Log Viewer • Datasource templates • Flush operations for connection pools • Enhanced model browser • …
  43. 43. V10 Preview
  44. 44. WF10 Goals • WildFly Core v2 • Require Java 8+ • HornetQ  ActiveMQ Artemis • JMS Graceful Shutdown • HA Singleton Deployments • Improved UI for large domains • Hierarchical Profiles
  45. 45. Elytron • Replacement for PicketBox (old JBossSX) • Get rid of JAAS as the internal SPI • Stop “sending the password around” • Multiple security associations per context • Support HTTP, SASL+GSSAPI, TSL, RADIOUS, etc. • Integrate with PicketLink and Keycloak • …
  46. 46. http://wildfly.org/joinus/
  47. 47. @dandreadis dandreadis.blogspot.com

×