JBoss Application Server 7
Jasoct
AS Project Lead

Dimitris Andreadis
May 4, 2011
Engineering Manager
JBoss Application Server
2
About Me

JBoss AS, Engineering Manager                dandreadis.blogspot.com

  •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 - present, Manager of JBoss AS Core Team

And before JBoss?
 •7y experience in distributed systems (telcos, NMS/OSS)
 •BSc/MSc Computer Science (Athens/Dublin)
Agenda

• A Brief History of JBoss AS
 • the Path to Java EE6
• JBoss Application Server 7
 • Architecture
 • Modularity
 • Management
• Enterprise Application Platform 6 (EAP)
JBoss AS Timeline
                                                                                                   JavaEE 6 Web Profile, JDK6/JDK7
                                                                                                   Modular Service Container Architecture


                                                                                    JavaEE 6 Web Profile, JDK6
                                                                                                                           JBoss AS 7.0, 7.0.1, 7.0.2


                                                                                                                  JBoss AS 6.0, 6.1
                                           JavaEE 5 certification, JDK5 & 6
                                           MicroContainer Architecture
                                                                                                   JBoss AS 5.1


                  J2EE 1.4 certification                      JBoss AS 5: 5.0.0.GA, 5.0.1.GA
                  JDK 1.4
 JBoss Versions




                                                                        JBoss AS 4.2.0 – 4.2.3


                                       JBoss AS 4.0.0     – 4.0.5                JEE 5.0 compatible,
                                                                                 not certified (95% pass)
                                                                                 JDK5.0
                         JBoss AS 3.2.0     –     3.2.8
                                                                                                       Time

                  2003         2004             2005       2006         2007         2008          2009           2010        2011

                                    J2EE 1.3, JDK 1.3
                                    JMX MicroKernel Architecture
Andiamo



      Java EE 6
The path to Java EE6

• JBoss AS 6.0
  •   Deliver faster on Java EE6
  •   Baking time for EE subsystems
  •   Measure interest on EE profiles
  •   Stepping stone for AS7


• New Stuff
  •   HornetQ (Messaging)
  •   Infinispan (Caching)
  •   Apache CXF (Web Services)
  •   Embedded Jopr Console
  •   mod_cluster
The path to Java EE6 (cont.)

• JBoss AS 6.0/6.1
  • Java EE6 Web Profile++ (or EE6 Full--)
  • Based on the 5.x Microcontainer
  • More lightweight than AS5

• Gotchas
  • JBoss AS6 will *not* be productized!
  • Currently in community maintenance mode
…in the meantime
A hard look in 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
Getting our Mojo back!

• Major Goals
  • Make it Smaller, Faster
  • Improve Manageability
  • Simplify Configuration

• Clean things up!
  • Remove abstraction layers
  • Remove legacy stuff
  • Modularize
JBoss AS7 Reloaded
JBoss AS7 Reloaded
Introducing

JBoss AS 7
        *A blazingly fast modular lightweight elegantly administrable
compliant application server with easy testing facilities – Carlo De Wolf, 2011
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, improved security, etc.

    •   AS 7.1.1 – released Mar/2012
        •   maintenance release
AS7 Key Features

• Fast and Lightweight
• Modular, OSGi enabled
• Unified, user focused configuration
• Multiple management interfaces
• Support for multi-node management
AS7 Architecture
                                         JBoss
               MSC                                                          DMR                          Controller                                Threads
                                        Modules


                                                     Server Controller Service

        Deployers                       VFS                      Jandex                      Reflect Cache                                      Repository

                                                                 Core Infrastructure




                                                                                                              FS Secanner

                                                                                                                            Transaction
               Datasource




                                                     Messaging
   Connector




                                                                                  Remoting



                                                                                                   Security




                                                                                                                                                       JAX-RS
                                                                  Naming

                                                                           OSGi
                                 EJB3

                                        Weld




                                                                                             SAR




                                                                                                                                          Web




                                                                                                                                                                JMX
                                               JPA




                                                                                                                                                  WS
                            EE




                                                                       Subsystems
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
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

                                                  Service Builder

                                                 Service Registry

                                                 Service Controller

                                Service   Deps         Value        Listeners   Injectors

                                          Concurrent Service Container
So What?
#@*%ing fast!




   http://community.jboss.org/wiki/AS7StartupTimeShowdown
Boot Time Results
Memory Comparison
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 
Modularity*
    *The Class Path is Dead – Mark Reinhold, 2009
Hierarchical Class Loading

• 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
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
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
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>
User Deployments

• Deployments are also modules (.ear, .war, etc.)

    deployment.foo.ear
    deployment.foo.ear.bar.war
    deployment.foo.ear.bar.jar



• Cannot access server implementation details,
  unless explicitly specified

    META-INF/MANIFEST.MF
    Dependencies: org.javassist, org.apache.velocity
Implicit Module Dependencies

Setup by the appserver/deployers automatically, e.g.

    META-INF/ejb-jar.xml, @Stateless,
    @Stateful, @MessageDriven
     import javaee.api module

    @PersistenceUnit, @PersistenceContext,
    <persistence-unit-ref>, <persistence-context-ref>
     import javaee.api module
     import org.jboss.as.jpa module
     import org.hibernate module
     import org.javaassist module
What about OSGi?
JBoss OSGi

• AS7 is fully compliant with OSGi v4.2 Core
• Implemented on top of JBoss MSC/Modules
• OSGi bundles become JBoss Modules
• Deploy your OSGi bundles, as usual
JBoss OSGi

• Out-of-the-box
 • OSGi Core 4.2, Config Admin, JNDI, JTA, JMX*

• Extras with installer
 • Web Apps, HTTP Service, Blueprint, Web Console




                                           *This may change
Management*
     *Keeping Administrators Happy
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 Physical Topology
Filesystem Layout
  jboss-7.1.x
    bin
          standalone.conf        Standalone Mode JVM Parameters

          standalone.sh          Standalone Mode

          domain.sh              Domain Mode
          jboss-cli.sh           Command Line Interface

    bundles      OSGi Bundles

                 Static JBoss Module Definitions
    modules
    standalone
          configuration
                    standalone.xml     Standalone Unified Configuration
          deployments                  File System Deployment
          logs
          data                         Internal Data (includes repository)
Filesystem Layout (cont)

   jboss-7.1.x
     domain
           configuration
                     standalone.xml   Domain Wide Unified Configuration
                     host.xml         Host Controller Configuration

           servers
                     server-one       Server “One” JVM instance data
                              logs
                              data
                     server-two       Server “Two” JVM instance data
                              logs
                              data
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
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)
Tx configuration snippet from standalone.xml
...
<subsystem
  xmlns="urn:jboss:domain:transactions:1.1">
  <core-environment>
    <process-id>
      <uuid/>
    </process-id>
  </core-environment>
  <recovery-environment socket-binding="txn-
  recovery-environment" status-socket-binding="txn-
  status-manager"/>
  <coordinator-environment default-timeout="300"/>
</subsystem>
...
…maps to Domain Model
...
 "transactions" : {
   "default-timeout" : 300,
   "enable-statistics" : false,
   "enable-tsm-status" : false,
   "jts" : false,
   "node-identifier" : "1",
   "object-store-path" : "tx-object-store",
   "object-store-relative-to" : "jboss.server.data.dir",
   "path" : "var",
   "process-id-socket-max-ports" : 10,
   "process-id-uuid" : true,
   "recovery-listener" : false,
   "relative-to" : "jboss.server.data.dir",
   "socket-binding" : "txn-recovery-environment",
   "status-socket-binding" : "txn-status-manager"
 },
Components*
       *First Class Only!
JBoss AS7 Reloaded
Roadmap

AS 7.0.2 – last version of 7.0 series
AS 7.1.1 – last version of 7.1 series


JBoss AS 7.1 is the base for JBoss
  Enterprise Application Platform 6 (EAP)


AS 7.2.x – feature enhancements
   •   Patching
   •   Graceful shutdown
   •   Audit logging
   •   …
JBoss EAP*
    *Professional Support from Professionals!
The Community JBoss Application Server (AS)
vs. the Enterprise Application Platform (EAP)


• Community Project (JBoss AS)
  - JBoss As We Know It
  - 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.
JBoss AS vs JBoss EAP
Ευχαριστώ*




             *Thank You!
dimitris@redhat.com   dandreadis.blogspot.com

More Related Content

PDF
JBoss Application Server 7
PDF
WebLogic FAQs
PDF
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
PPTX
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
PPTX
WebSphere Application Server
PPTX
Jboss Tutorial Basics
PPT
WebLogic Scripting Tool Overview
PPTX
VMware VSAN Technical Deep Dive - March 2014
JBoss Application Server 7
WebLogic FAQs
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
WebSphere Application Server
Jboss Tutorial Basics
WebLogic Scripting Tool Overview
VMware VSAN Technical Deep Dive - March 2014

What's hot (20)

PDF
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
PDF
AWS CDK를 활용한 게임 데이터 파이프라인 구축 방안 [레벨 200] - 발표자: Douglas Lima, 데브옵스 컨설턴트, AWS ...
PPTX
Converter 5.5を使ったP2V V2V
PDF
Tomcat and apache httpd training
PPTX
VMware Vsphere Graduation Project Presentation
PDF
Introduccion a la Virtualización.pdf
PDF
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
PPT
Netbeans IDE & Platform
PDF
컨테이너 (PaaS) 환경으로의 애플리케이션 전환 방법과 고려사항
PDF
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
PDF
[오픈소스컨설팅]Java Performance Tuning
PDF
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
PDF
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
PDF
Integração do Zabbix com Grafana
PPTX
CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드
PDF
Ansible Automation Platform.pdf
PPTX
Building a Stretched Cluster using Virtual SAN 6.1
PDF
ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사
PDF
AWS Summit Seoul 2023 | 당신만 모르고 있는 AWS 컨트롤 타워 트렌드
PDF
AWS Black Belt Online Seminar 2016 Amazon WorkSpaces
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
AWS CDK를 활용한 게임 데이터 파이프라인 구축 방안 [레벨 200] - 발표자: Douglas Lima, 데브옵스 컨설턴트, AWS ...
Converter 5.5を使ったP2V V2V
Tomcat and apache httpd training
VMware Vsphere Graduation Project Presentation
Introduccion a la Virtualización.pdf
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
Netbeans IDE & Platform
컨테이너 (PaaS) 환경으로의 애플리케이션 전환 방법과 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
Integração do Zabbix com Grafana
CI / CD ( 지속적인 통합 / 지속적인 전달 ) 발표 자료 다운로드
Ansible Automation Platform.pdf
Building a Stretched Cluster using Virtual SAN 6.1
ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사
AWS Summit Seoul 2023 | 당신만 모르고 있는 AWS 컨트롤 타워 트렌드
AWS Black Belt Online Seminar 2016 Amazon WorkSpaces
Ad

Viewers also liked (17)

PDF
JBoss EAP / WildFly, State of the Union
PDF
WildFly AppServer - State of the Union
KEY
JBoss AS7 Overview
DOCX
Instruction on creating a cluster on jboss eap environment
PDF
JBoss AS / EAP and Java EE6
PPTX
Weblogic Application Server training-course-navi-mumbai-weblogic application ...
PDF
WebLogic JMX for DevOps
PPT
J boss
PPTX
Creating a Domain with Oracle WebLogic 11g
PPTX
Building WebLogic Domains With WLST
PDF
Weblogic server administration
PDF
WebLogic im Docker Container
PPT
Weblogic configuration & administration
PDF
Weblogic 11g admin basic with screencast
PDF
Java WebApps und Services on Oracle Java Cloud Service
KEY
Administration von ADF Anwendungen
PPT
Oracle WebLogic Server Basic Concepts
JBoss EAP / WildFly, State of the Union
WildFly AppServer - State of the Union
JBoss AS7 Overview
Instruction on creating a cluster on jboss eap environment
JBoss AS / EAP and Java EE6
Weblogic Application Server training-course-navi-mumbai-weblogic application ...
WebLogic JMX for DevOps
J boss
Creating a Domain with Oracle WebLogic 11g
Building WebLogic Domains With WLST
Weblogic server administration
WebLogic im Docker Container
Weblogic configuration & administration
Weblogic 11g admin basic with screencast
Java WebApps und Services on Oracle Java Cloud Service
Administration von ADF Anwendungen
Oracle WebLogic Server Basic Concepts
Ad

Similar to JBoss AS7 Reloaded (20)

PDF
Server Day 2009: JBoss 5.0 by Alessio Soldano
PPTX
J2ee and web services
PDF
JUG Darmstadt - Java EE 7 - Auf in die Wolken!
PDF
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
PDF
soft-shake.ch - JBoss AS 7, la révolution
PDF
Shin J2 Ee Programming Half Day
PDF
Java EE 7 - Into the Cloud
PDF
JBoss AS 7, la révolution
PDF
The Java Ee 6 Platform Normandy Jug
PDF
JavaEE6
PDF
Plataforma Java EE 7: Produtividade & HTML5 - Parte 1
PDF
Understanding the nuts & bolts of Java EE 6
PDF
N(i)2 technical architecture 2.0 (v1 1)
 
PDF
TDC 2011: OSGi-enabled Java EE Application
PDF
The Glassfish Experience
PPT
Summer training java
PDF
Sail Fin Webinar Overview
PDF
Java EE 6 Component Model Explained
PDF
Summer training java
PDF
Sun Java EE 6 Overview
Server Day 2009: JBoss 5.0 by Alessio Soldano
J2ee and web services
JUG Darmstadt - Java EE 7 - Auf in die Wolken!
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
soft-shake.ch - JBoss AS 7, la révolution
Shin J2 Ee Programming Half Day
Java EE 7 - Into the Cloud
JBoss AS 7, la révolution
The Java Ee 6 Platform Normandy Jug
JavaEE6
Plataforma Java EE 7: Produtividade & HTML5 - Parte 1
Understanding the nuts & bolts of Java EE 6
N(i)2 technical architecture 2.0 (v1 1)
 
TDC 2011: OSGi-enabled Java EE Application
The Glassfish Experience
Summer training java
Sail Fin Webinar Overview
Java EE 6 Component Model Explained
Summer training java
Sun Java EE 6 Overview

More from Dimitris Andreadis (10)

PDF
Turn you Java EE Monoliths into Microservices with WildFly Swarm
PDF
WildFly & WildFly Swarm
PDF
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
PDF
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
PDF
WildFly BOF and V9 update @ Devoxx 2014
PDF
Introduction to Role Based Administration in WildFly 8
PDF
Devoxx 2013, WildFly BOF
PDF
2012 Devoxx - JBossAS BOF
PDF
jboss.org-jboss.com
PDF
7 secrets of successful opensource developers
Turn you Java EE Monoliths into Microservices with WildFly Swarm
WildFly & WildFly Swarm
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
WildFly BOF and V9 update @ Devoxx 2014
Introduction to Role Based Administration in WildFly 8
Devoxx 2013, WildFly BOF
2012 Devoxx - JBossAS BOF
jboss.org-jboss.com
7 secrets of successful opensource developers

Recently uploaded (20)

PDF
Architecture types and enterprise applications.pdf
PPTX
Web Crawler for Trend Tracking Gen Z Insights.pptx
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPT
Module 1.ppt Iot fundamentals and Architecture
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
August Patch Tuesday
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
Five Habits of High-Impact Board Members
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
DP Operators-handbook-extract for the Mautical Institute
PPTX
Benefits of Physical activity for teenagers.pptx
PDF
CloudStack 4.21: First Look Webinar slides
PDF
Hybrid model detection and classification of lung cancer
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
Getting Started with Data Integration: FME Form 101
PPTX
The various Industrial Revolutions .pptx
PPT
Geologic Time for studying geology for geologist
Architecture types and enterprise applications.pdf
Web Crawler for Trend Tracking Gen Z Insights.pptx
Group 1 Presentation -Planning and Decision Making .pptx
Module 1.ppt Iot fundamentals and Architecture
O2C Customer Invoices to Receipt V15A.pptx
Zenith AI: Advanced Artificial Intelligence
August Patch Tuesday
A novel scalable deep ensemble learning framework for big data classification...
A comparative study of natural language inference in Swahili using monolingua...
sustainability-14-14877-v2.pddhzftheheeeee
Five Habits of High-Impact Board Members
A contest of sentiment analysis: k-nearest neighbor versus neural network
DP Operators-handbook-extract for the Mautical Institute
Benefits of Physical activity for teenagers.pptx
CloudStack 4.21: First Look Webinar slides
Hybrid model detection and classification of lung cancer
Hindi spoken digit analysis for native and non-native speakers
Getting Started with Data Integration: FME Form 101
The various Industrial Revolutions .pptx
Geologic Time for studying geology for geologist

JBoss AS7 Reloaded

  • 1. JBoss Application Server 7 Jasoct AS Project Lead Dimitris Andreadis May 4, 2011 Engineering Manager JBoss Application Server
  • 2. 2
  • 3. About Me JBoss AS, Engineering Manager dandreadis.blogspot.com •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 - present, Manager of JBoss AS Core Team And before JBoss? •7y experience in distributed systems (telcos, NMS/OSS) •BSc/MSc Computer Science (Athens/Dublin)
  • 4. Agenda • A Brief History of JBoss AS • the Path to Java EE6 • JBoss Application Server 7 • Architecture • Modularity • Management • Enterprise Application Platform 6 (EAP)
  • 5. JBoss AS Timeline JavaEE 6 Web Profile, JDK6/JDK7 Modular Service Container Architecture JavaEE 6 Web Profile, JDK6 JBoss AS 7.0, 7.0.1, 7.0.2 JBoss AS 6.0, 6.1 JavaEE 5 certification, JDK5 & 6 MicroContainer Architecture JBoss AS 5.1 J2EE 1.4 certification JBoss AS 5: 5.0.0.GA, 5.0.1.GA JDK 1.4 JBoss Versions JBoss AS 4.2.0 – 4.2.3 JBoss AS 4.0.0 – 4.0.5 JEE 5.0 compatible, not certified (95% pass) JDK5.0 JBoss AS 3.2.0 – 3.2.8 Time 2003 2004 2005 2006 2007 2008 2009 2010 2011 J2EE 1.3, JDK 1.3 JMX MicroKernel Architecture
  • 6. Andiamo Java EE 6
  • 7. The path to Java EE6 • JBoss AS 6.0 • Deliver faster on Java EE6 • Baking time for EE subsystems • Measure interest on EE profiles • Stepping stone for AS7 • New Stuff • HornetQ (Messaging) • Infinispan (Caching) • Apache CXF (Web Services) • Embedded Jopr Console • mod_cluster
  • 8. The path to Java EE6 (cont.) • JBoss AS 6.0/6.1 • Java EE6 Web Profile++ (or EE6 Full--) • Based on the 5.x Microcontainer • More lightweight than AS5 • Gotchas • JBoss AS6 will *not* be productized! • Currently in community maintenance mode
  • 10. A hard look in 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
  • 11. Getting our Mojo back! • Major Goals • Make it Smaller, Faster • Improve Manageability • Simplify Configuration • Clean things up! • Remove abstraction layers • Remove legacy stuff • Modularize
  • 14. Introducing JBoss AS 7 *A blazingly fast modular lightweight elegantly administrable compliant application server with easy testing facilities – Carlo De Wolf, 2011
  • 15. 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, improved security, etc. • AS 7.1.1 – released Mar/2012 • maintenance release
  • 16. AS7 Key Features • Fast and Lightweight • Modular, OSGi enabled • Unified, user focused configuration • Multiple management interfaces • Support for multi-node management
  • 17. AS7 Architecture JBoss MSC DMR Controller Threads Modules Server Controller Service Deployers VFS Jandex Reflect Cache Repository Core Infrastructure FS Secanner Transaction Datasource Messaging Connector Remoting Security JAX-RS Naming OSGi EJB3 Weld SAR Web JMX JPA WS EE Subsystems
  • 18. 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
  • 19. 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 Service Builder Service Registry Service Controller Service Deps Value Listeners Injectors Concurrent Service Container
  • 21. #@*%ing fast! http://community.jboss.org/wiki/AS7StartupTimeShowdown
  • 24. 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 
  • 25. Modularity* *The Class Path is Dead – Mark Reinhold, 2009
  • 26. Hierarchical Class Loading • 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
  • 27. 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
  • 28. 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
  • 29. 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>
  • 30. User Deployments • Deployments are also modules (.ear, .war, etc.) deployment.foo.ear deployment.foo.ear.bar.war deployment.foo.ear.bar.jar • Cannot access server implementation details, unless explicitly specified META-INF/MANIFEST.MF Dependencies: org.javassist, org.apache.velocity
  • 31. Implicit Module Dependencies Setup by the appserver/deployers automatically, e.g. META-INF/ejb-jar.xml, @Stateless, @Stateful, @MessageDriven  import javaee.api module @PersistenceUnit, @PersistenceContext, <persistence-unit-ref>, <persistence-context-ref>  import javaee.api module  import org.jboss.as.jpa module  import org.hibernate module  import org.javaassist module
  • 33. JBoss OSGi • AS7 is fully compliant with OSGi v4.2 Core • Implemented on top of JBoss MSC/Modules • OSGi bundles become JBoss Modules • Deploy your OSGi bundles, as usual
  • 34. JBoss OSGi • Out-of-the-box • OSGi Core 4.2, Config Admin, JNDI, JTA, JMX* • Extras with installer • Web Apps, HTTP Service, Blueprint, Web Console *This may change
  • 35. Management* *Keeping Administrators Happy
  • 36. 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
  • 38. Filesystem Layout jboss-7.1.x bin standalone.conf Standalone Mode JVM Parameters standalone.sh Standalone Mode domain.sh Domain Mode jboss-cli.sh Command Line Interface bundles OSGi Bundles Static JBoss Module Definitions modules standalone configuration standalone.xml Standalone Unified Configuration deployments File System Deployment logs data Internal Data (includes repository)
  • 39. Filesystem Layout (cont) jboss-7.1.x domain configuration standalone.xml Domain Wide Unified Configuration host.xml Host Controller Configuration servers server-one Server “One” JVM instance data logs data server-two Server “Two” JVM instance data logs data
  • 40. 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>
  • 41. Management APIs • Command Line Interface (CLI) • Remote Java API • HTTP/JSON API • GWT-based console • JMX mapping
  • 42. 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)
  • 43. Tx configuration snippet from standalone.xml ... <subsystem xmlns="urn:jboss:domain:transactions:1.1"> <core-environment> <process-id> <uuid/> </process-id> </core-environment> <recovery-environment socket-binding="txn- recovery-environment" status-socket-binding="txn- status-manager"/> <coordinator-environment default-timeout="300"/> </subsystem> ...
  • 44. …maps to Domain Model ... "transactions" : { "default-timeout" : 300, "enable-statistics" : false, "enable-tsm-status" : false, "jts" : false, "node-identifier" : "1", "object-store-path" : "tx-object-store", "object-store-relative-to" : "jboss.server.data.dir", "path" : "var", "process-id-socket-max-ports" : 10, "process-id-uuid" : true, "recovery-listener" : false, "relative-to" : "jboss.server.data.dir", "socket-binding" : "txn-recovery-environment", "status-socket-binding" : "txn-status-manager" },
  • 45. Components* *First Class Only!
  • 47. Roadmap AS 7.0.2 – last version of 7.0 series AS 7.1.1 – last version of 7.1 series JBoss AS 7.1 is the base for JBoss Enterprise Application Platform 6 (EAP) AS 7.2.x – feature enhancements • Patching • Graceful shutdown • Audit logging • …
  • 48. JBoss EAP* *Professional Support from Professionals!
  • 49. The Community JBoss Application Server (AS) vs. the Enterprise Application Platform (EAP) • Community Project (JBoss AS) - JBoss As We Know It - 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.
  • 50. JBoss AS vs JBoss EAP
  • 51. Ευχαριστώ* *Thank You!
  • 52. dimitris@redhat.com dandreadis.blogspot.com