SlideShare a Scribd company logo
1 of 43
dynamic
        deployment
         with OSGi


Angelo van der Sijpt
angelo.vandersijpt@luminis.nl
how about modules?
Partitioning software

• modular, componentized, ...
• minimize dependencies
• consider rate of change
• minimize complexity
• maximize architected flexibility
• testability
• reuse
Reuse: copy/paste




• no clearly defined interface
• maintenance nightmare
Reuse: Object Oriented




• objects tend to work badly when
  taken out of context
Reuse: Components




• components are black boxes
• clear “interfaces” with their
>)=9)%)%                                                    A(..0=9




               28"=4?
                                                       C-       (,)=                203)                =)8
               #0=302




  @07(;'                           &<0,)                       -.,(%')%                                *+,(%')%




   4%0,<         2:;0%)   #"%#6)           '%"0=46)              234                        /0#)1(($              !"#$%




A(=54;%0B(=                                            @(4                          &'(%)                         *3)='




   #(=54                                              6(44)%           56)272').            8)1903                )3)='
>)=9)%)%                                                                  A(..0=9
                %)=9)%)%                                                                  #(..0=9



                  28"=4?
                                                                 C-              (,)=             203)                 =)8
                  #0=302
               28"=4D#0=302                                 28"=4D;"      28"=4D#.9D(,)=     28"=4D#.9D203)         28"=4D#.9D=)8
                                                         28"=4D#(='%(62


     @07(;'                                  &<0,)                             -.,(%')%                                  *+,(%')%
     607(;'                                  2<0,)                             ".,(%')%                                  )+,(%')%



     4%0,<          2:;0%)       #"%#6)               '%"0=46)                   234                          /0#)1(($               !"#$%
607(;'D4%0,<   2<0,)D2:;0%)   2<0,)D#"%#6)           2<0,)D'%"0=46)            ".,D234                      )+,DE(($                ".,D!"#$%



 A(=54;%0B(=                                                    @(4                                 &'(%)                         *3)='
    (24"D#0                                                   (24"D6(4                              2'(%)                       (24"D)3)='



     #(=54                                                     6(44)%                 56)272').           8)1903                    )3)='
    /)6"+D#0                                                  /)6"+D6(4              2'(%)D/2           2'(%)D8)1903                /)6"+D)3)='
%)=9)%)%                                                                     #(..0=9
                >)=9)%)%                                                                     A(..0=9
                %)=9)%)%                                                                     #(..0=9

                                       ;"                                                            #(..0=92
                  28"=4?
                                                                    C-              (,)=              203)                  =)8
                  #0=302
               28"=4D#0=302                                    28"=4D;"      28"=4D#.9D(,)=      28"=4D#.9D203)          28"=4D#.9D=)8
                                                            28"=4D#(='%(62

                       9%08"=4                  &<0,)                                                   0,"D"(
     @07(;'                                                                       -.,(%')%                                    *+,(%')%
     607(;'                                     2<0,)                             ".,(%')%                                    )+,(%')%

   4%0,<                           2<0,)2                                           234                                     )+,(%')%2
     4%0,<          2:;0%)          #"%#6)               '%"0=46)                   234                            /0#)1(($               !"#$%
607(;'D4%0,<   2<0,)D2:;0%)      2<0,)D#"%#6)           2<0,)D'%"0=46)            ".,D234                        )+,DE(($                ".,D!"#$%


                                                                 0,"D(24"
 A(=54;%0B(=                                                       @(4                                  &'(%)                          *3)='
    (24"D#0                                                      (24"D6(4                               2'(%)                        (24"D)3)='


  #(=5409."=                                                        6(4                   56)2'(%)                 8)1903                  )3)='
     #(=54                                                        6(44)%                    56)272').          8)1903                    )3)='
    /)6"+D#0                                                     /)6"+D6(4                 2'(%)D/2          2'(%)D8)1903                /)6"+D)3)='
OSGi technology is the dynamic module system for
Java™
OSGi technology is Universal Middleware.
OSGi technology provides a service-oriented, component-
based environment for developers and offers standardized
ways to manage the software lifecycle. These capabilities
greatly increase the value of a wide range of computers and
devices that use the Java™ platform.
!"#$%"&'($)&%*+,-./'0                                          !"#$%"&'($)&%*+,-./'0
1/'&%"2&)$.$),-$/3                                             "&'($)&%1/02&34$50
45&%!"#$%6++$,3)&                                              67&%!"#$%8++$,3)&

7&+&,8&%9:%;&'8$/3%9<=                                         9&+&,:&%;<%=&':$/3%;>?
62'$+%>??@                                                     82'$+%@AAB




                                                                                                              Digitally
                                                                                                              signed by



                                               Digitally
                                                                                                   OSGi       OSGi Alliance
                                                                                                              DN: cn=OSGi
                                                                                                              Alliance, c=US
                                                                                                              Date:
                                               signed by                                                      2007.02.22


                                    OSGi       OSGi Alliance
                                               DN: cn=OSGi
                                               Alliance,
                                               c=US
                                                                                        Signatu
                                                                                                   Alliance   14:44:10 +
                                                                                                              01'00'


                                                                                        re Not


                                    Alliance
                                               Date:                                    Verified
                                               2007.02.22
                         Signatur              14:45:47 +
                         e Not                 01'00'
                         Verified
L3 -   Provides a publish/find/
SERVICE MODEL   bind service model to decouple
                bundles

                L2 -   Manages the life cycle of
                a bundle in a framework
  LIFECYCLE     without requiring the vm to be
                restarted

                L1 -   Creates the concept of a
                module (aka. bundle) that use
  MODULE        classes from each other in a
                controlled way according to
                system and bundle constraints

                L0 -
 Execution      OSGi Minimum Execution
Environment     Environment
                CDC/Foundation
                JavaSE
Module Layer
                                                                                              Module
                            Bundle           Bundle           Bundle         Bundle


                                 imports              exports          imports
                       exports                  exports                           exports


• unit of deployment  org.apache.utils 1.0            org.apache.db 1.4


  is the bundle i.e., a JAR          org.apache.log 2.3                org.apache.utils 1.1




• share only your “interface”
  packages
• automatic wiring based on version
  ranges
                                                                          Module
Life-cycle Layer
                                                                                   Life-cycle
                               install
                                          installed
                       start                           start   starting

                                          resolved                                  active


• Managed life cycle    end                     uninstall

                                         uninstalled
                                                               stopping     stop




 • States for each bundle;
• Allows updates of existing bundles.
 • Dynamically install, start, update, and
   uninstall
                                                                   Life-cycle

                                                                          Module
Service Layer

• OSGi framework
                                                                                     Service



  promotes service
                           Log               Database             Prefs
                                                        publish            publish
                                                  use

  oriented interaction
                       publish     use                            use
                          Bundle         Bundle         Bundle            Bundle


  pattern among
  bundles
            Service
            Registry
publish                    find                                            Service

                                                                      Life-cycle
  Service               Service
 Provider              Requeste                                           Module
            interact
OSGi compendium
User Admin    Initial Provisioning    Wire Admin
 XML         Log              Device Access
                   Measurement and
Parser                   State           UPnP™
       Preferences                       Device
                    Configuration Admin
 Position
           Metatype
 Event              Service Tracker
 Admin
                     HTTP
   IO Connector
                      Execution
                  Environment Spec
   Declarative Services
Now we have components,
     hurrah! Right?
“What version do you
 have?”
 “Can you look in the ‘about’
 box?”

Now we install 037B.17.zip
 “Did you have components,
 we sent you?”
       hurrah! Right?
 What is the version of the
 product, anyway?
how about configuration
Dynamic Deployment


• who uses what?
• what’s the history of a system?
• what’s the impact of this bug?
• integrate into build/test/QA cycle
• extensions, like (re)install and
  license management
!"#$"%&%'()   !"#$%&'(


!"#$"%&%'(*   !"#$%&')


!"#$"%&%'(!   !"#$%&'*
!"#$"%&%'()                !"#$%&'(


!"#$"%&%'(*   !"#$%&'"()   !"#$%&')


!"#$"%&%'(!                !"#$%&'*
now
!"#$"%&%'()   !"#$%&'(


!"#$"%&%'(*   !"#$%&')


!"#$"%&%'(!   !"#$%&'*
last year
         !"#$"%&%'()   +,-.&'()
                             last month
      !"#$"%&%'()
         !"#$"%&%'(*      +,-.&'()
                                     last week
   !"#$"%&%'()
      !"#$"%&%'(*
                             !"#$%&'(
                       +,-.&'(!
                          +,-.&'(*               now
!"#$"%&%'()                       !"#$%&'(
   !"#$"%&%'(*              !"#$%&')
                          +,-.&'(!


!"#$"%&%'(*
   !"#$"%&%'(!
                                  !"#$%&')
                             !"#$%&'*


!"#$"%&%'(!                       !"#$%&'*
!"#$%!
                                   0"&"$%0%&!.
                                      "$%&!


                                       !"#$%!
/2,%&!
         *#(+,-,(&,&$.             0"&"$%0%&!.
                         &%!'(#)
            -%#+%#                    "$%&!


                                       !"#$%!
                                   0"&"$%0%&!.
                                      "$%&!
         /(0*(&%&!.
          #%*(-,!(#1
!"#"$!"$%&'
                 !"#,-&("$+
()$)*"("$+



          .""!/)%0
',*-&'(    )&*(+"%(                 !"#$"%&%'(
              2       1"#$"%&%'/0   !"#$"%&%'()
              3       1"#$"%&%'/0   !"#$"%&%'()   !"#$"%&%'(!
.,*-&'/0
              4       1"#$"%&%'/0   !"#$"%&%'(!   !"#$"%&%'(*
              5       1"#$"%&%'/1   !"#$"%&%'(*

              2       1"#$"%&%'/6   !"#$"%&%'(*
.,*-&'/6
              3       1"#$"%&%'/0   !"#$"%&%'()   !"#$"%&%'(*
!"#$%!
                                      0"&"$%0%&!.
                                         "$%&!


                                          !"#$%!
 /2,%&!
            *#(+,-,(&,&$.             0"&"$%0%&!.
                            &%!'(#)
               -%#+%#                    "$%&!


                                          !"#$%!
                                      0"&"$%0%&!.
                                         "$%&!
            /(0*(&%&!.
             #%*(-,!(#1


• server only stores metadata, so no
  IP in these repositories
• allows integration with different
  repositories
 • OBR, Maven (anything with a URL)
!"#$%!
    *#(+,-,(&,&$.                                          /"&"$%/%&!.
                                                &%!'(#)
       -%#+%#                                                 "$%&!

                    012,!.                                                 012,!.
                     3($                                                    3($

!=#".%@A*?B*-%45(%23-'+*,C%151*%4521-
  $"#$E%;21-<*%$"%,+533*-
!:#".
!D#".!"#$"%&'()*+%,+'(+*-
  $"#$9                                                   !"#$"%&'()*+%,+'(+*-
$E#".!"#$.%/+'(01)%23-'+*%4(56%7*(,851%9%+5%:
  $"#.9                                                   !"#$.%/+'(01)%23-'+*%4(56%7*(,851%9%+5%:
$!#".!"#$.%;21-<*%"=%23-'+*-
  E$#$$                                                   !"#$.%;21-<*%"=%23-'+*-
     !"#$9%>3-'+*%+5%7*(,851%:%,2??**-*-
  E9#$$                                                   !"#$9%>3-'+*%+5%7*(,851%:%,2??**-*-
     !.#$9%&'()*+%,+533*-                                 !.#$9%&'()*+%,+533*-
Management Agent

• manages life cycle of
 bundles

• controls package sharing
 policies

• controls starting/stopping   !"#$%"&'($)&%*+,-./'0
                               1/'&%"2&)$.$),-$/3
                               45&%!"#$%6++$,3)&


 order                         7&+&,8&%9:%;&'8$/3%9<=
                               >?3&%=@@A




• implements a security
!"#"$%!%#&'"$%#&

 *'.#"/0#,        '('.#


"#10)-2#$34
                (/"!340)6
   3(*5


!"#$%&'(%)$     "!*')+#,-
Management Agent
                                  !"#"$%!%#&'"$%#&

                              *'.#"/0#,        '('.#


                             "#10)-2#$34
                                             (/"!340)6
                                3(*5


                             !"#$%&'(%)$     "!*')+#,-




• identification, uniquely identifies a
  target
• discovery, provides mechanism to
  find server
• scheduler, periodically triggers
  updates
Deployment Admin
•   versioned set of artifacts
•   transactional install/update
•   fix packages provide deltas
•   signing makes them secure
•   extensible through resource
    processors                             !"#$%!
                                       0"&"$%0%&!.
                                          "$%&!


                                           !"#$%!
    /2,%&!
             *#(+,-,(&,&$.             0"&"$%0%&!.
                             &%!'(#)
                -%#+%#                    "$%&!


                                           !"#$%!
                                       0"&"$%0%&!.
                                          "$%&!
             /(0*(&%&!.
              #%*(-,!(#1
demo
Angelo van der Sijpt
software engineer at Luminis / Apache ACE
committer
angelo.vandersijpt@luminis.nl
@_angelos
Further reading


• www.luminis-technologies.com
• cwiki.apache.org/ACE/
• cwiki.apache.org/FELIX/


• Or ask me:
  angelo.vandersijpt@luminis.nl

More Related Content

Recently uploaded

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 

Recently uploaded (20)

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Dynamic Deployment Oredev 2009

  • 1. dynamic deployment with OSGi Angelo van der Sijpt angelo.vandersijpt@luminis.nl
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 10. Partitioning software • modular, componentized, ... • minimize dependencies • consider rate of change • minimize complexity • maximize architected flexibility • testability • reuse
  • 11. Reuse: copy/paste • no clearly defined interface • maintenance nightmare
  • 12. Reuse: Object Oriented • objects tend to work badly when taken out of context
  • 13. Reuse: Components • components are black boxes • clear “interfaces” with their
  • 14. >)=9)%)% A(..0=9 28"=4? C- (,)= 203) =)8 #0=302 @07(;' &<0,) -.,(%')% *+,(%')% 4%0,< 2:;0%) #"%#6) '%"0=46) 234 /0#)1(($ !"#$% A(=54;%0B(= @(4 &'(%) *3)=' #(=54 6(44)% 56)272'). 8)1903 )3)='
  • 15. >)=9)%)% A(..0=9 %)=9)%)% #(..0=9 28"=4? C- (,)= 203) =)8 #0=302 28"=4D#0=302 28"=4D;" 28"=4D#.9D(,)= 28"=4D#.9D203) 28"=4D#.9D=)8 28"=4D#(='%(62 @07(;' &<0,) -.,(%')% *+,(%')% 607(;' 2<0,) ".,(%')% )+,(%')% 4%0,< 2:;0%) #"%#6) '%"0=46) 234 /0#)1(($ !"#$% 607(;'D4%0,< 2<0,)D2:;0%) 2<0,)D#"%#6) 2<0,)D'%"0=46) ".,D234 )+,DE(($ ".,D!"#$% A(=54;%0B(= @(4 &'(%) *3)=' (24"D#0 (24"D6(4 2'(%) (24"D)3)=' #(=54 6(44)% 56)272'). 8)1903 )3)=' /)6"+D#0 /)6"+D6(4 2'(%)D/2 2'(%)D8)1903 /)6"+D)3)='
  • 16. %)=9)%)% #(..0=9 >)=9)%)% A(..0=9 %)=9)%)% #(..0=9 ;" #(..0=92 28"=4? C- (,)= 203) =)8 #0=302 28"=4D#0=302 28"=4D;" 28"=4D#.9D(,)= 28"=4D#.9D203) 28"=4D#.9D=)8 28"=4D#(='%(62 9%08"=4 &<0,) 0,"D"( @07(;' -.,(%')% *+,(%')% 607(;' 2<0,) ".,(%')% )+,(%')% 4%0,< 2<0,)2 234 )+,(%')%2 4%0,< 2:;0%) #"%#6) '%"0=46) 234 /0#)1(($ !"#$% 607(;'D4%0,< 2<0,)D2:;0%) 2<0,)D#"%#6) 2<0,)D'%"0=46) ".,D234 )+,DE(($ ".,D!"#$% 0,"D(24" A(=54;%0B(= @(4 &'(%) *3)=' (24"D#0 (24"D6(4 2'(%) (24"D)3)=' #(=5409."= 6(4 56)2'(%) 8)1903 )3)=' #(=54 6(44)% 56)272'). 8)1903 )3)=' /)6"+D#0 /)6"+D6(4 2'(%)D/2 2'(%)D8)1903 /)6"+D)3)='
  • 17. OSGi technology is the dynamic module system for Java™ OSGi technology is Universal Middleware. OSGi technology provides a service-oriented, component- based environment for developers and offers standardized ways to manage the software lifecycle. These capabilities greatly increase the value of a wide range of computers and devices that use the Java™ platform.
  • 18. !"#$%"&'($)&%*+,-./'0 !"#$%"&'($)&%*+,-./'0 1/'&%"2&)$.$),-$/3 "&'($)&%1/02&34$50 45&%!"#$%6++$,3)& 67&%!"#$%8++$,3)& 7&+&,8&%9:%;&'8$/3%9<= 9&+&,:&%;<%=&':$/3%;>? 62'$+%>??@ 82'$+%@AAB Digitally signed by Digitally OSGi OSGi Alliance DN: cn=OSGi Alliance, c=US Date: signed by 2007.02.22 OSGi OSGi Alliance DN: cn=OSGi Alliance, c=US Signatu Alliance 14:44:10 + 01'00' re Not Alliance Date: Verified 2007.02.22 Signatur 14:45:47 + e Not 01'00' Verified
  • 19. L3 - Provides a publish/find/ SERVICE MODEL bind service model to decouple bundles L2 - Manages the life cycle of a bundle in a framework LIFECYCLE without requiring the vm to be restarted L1 - Creates the concept of a module (aka. bundle) that use MODULE classes from each other in a controlled way according to system and bundle constraints L0 - Execution OSGi Minimum Execution Environment Environment CDC/Foundation JavaSE
  • 20. Module Layer Module Bundle Bundle Bundle Bundle imports exports imports exports exports exports • unit of deployment org.apache.utils 1.0 org.apache.db 1.4 is the bundle i.e., a JAR org.apache.log 2.3 org.apache.utils 1.1 • share only your “interface” packages • automatic wiring based on version ranges Module
  • 21. Life-cycle Layer Life-cycle install installed start start starting resolved active • Managed life cycle end uninstall uninstalled stopping stop • States for each bundle; • Allows updates of existing bundles. • Dynamically install, start, update, and uninstall Life-cycle Module
  • 22. Service Layer • OSGi framework Service promotes service Log Database Prefs publish publish use oriented interaction publish use use Bundle Bundle Bundle Bundle pattern among bundles Service Registry publish find Service Life-cycle Service Service Provider Requeste Module interact
  • 23. OSGi compendium User Admin Initial Provisioning Wire Admin XML Log Device Access Measurement and Parser State UPnP™ Preferences Device Configuration Admin Position Metatype Event Service Tracker Admin HTTP IO Connector Execution Environment Spec Declarative Services
  • 24. Now we have components, hurrah! Right?
  • 25. “What version do you have?” “Can you look in the ‘about’ box?” Now we install 037B.17.zip “Did you have components, we sent you?” hurrah! Right? What is the version of the product, anyway?
  • 27. Dynamic Deployment • who uses what? • what’s the history of a system? • what’s the impact of this bug? • integrate into build/test/QA cycle • extensions, like (re)install and license management
  • 28. !"#$"%&%'() !"#$%&'( !"#$"%&%'(* !"#$%&') !"#$"%&%'(! !"#$%&'*
  • 29. !"#$"%&%'() !"#$%&'( !"#$"%&%'(* !"#$%&'"() !"#$%&') !"#$"%&%'(! !"#$%&'*
  • 30. now !"#$"%&%'() !"#$%&'( !"#$"%&%'(* !"#$%&') !"#$"%&%'(! !"#$%&'*
  • 31. last year !"#$"%&%'() +,-.&'() last month !"#$"%&%'() !"#$"%&%'(* +,-.&'() last week !"#$"%&%'() !"#$"%&%'(* !"#$%&'( +,-.&'(! +,-.&'(* now !"#$"%&%'() !"#$%&'( !"#$"%&%'(* !"#$%&') +,-.&'(! !"#$"%&%'(* !"#$"%&%'(! !"#$%&') !"#$%&'* !"#$"%&%'(! !"#$%&'*
  • 32. !"#$%! 0"&"$%0%&!. "$%&! !"#$%! /2,%&! *#(+,-,(&,&$. 0"&"$%0%&!. &%!'(#) -%#+%# "$%&! !"#$%! 0"&"$%0%&!. "$%&! /(0*(&%&!. #%*(-,!(#1
  • 33. !"#"$!"$%&' !"#,-&("$+ ()$)*"("$+ .""!/)%0
  • 34. ',*-&'( )&*(+"%( !"#$"%&%'( 2 1"#$"%&%'/0 !"#$"%&%'() 3 1"#$"%&%'/0 !"#$"%&%'() !"#$"%&%'(! .,*-&'/0 4 1"#$"%&%'/0 !"#$"%&%'(! !"#$"%&%'(* 5 1"#$"%&%'/1 !"#$"%&%'(* 2 1"#$"%&%'/6 !"#$"%&%'(* .,*-&'/6 3 1"#$"%&%'/0 !"#$"%&%'() !"#$"%&%'(*
  • 35. !"#$%! 0"&"$%0%&!. "$%&! !"#$%! /2,%&! *#(+,-,(&,&$. 0"&"$%0%&!. &%!'(#) -%#+%# "$%&! !"#$%! 0"&"$%0%&!. "$%&! /(0*(&%&!. #%*(-,!(#1 • server only stores metadata, so no IP in these repositories • allows integration with different repositories • OBR, Maven (anything with a URL)
  • 36. !"#$%! *#(+,-,(&,&$. /"&"$%/%&!. &%!'(#) -%#+%# "$%&! 012,!. 012,!. 3($ 3($ !=#".%@A*?B*-%45(%23-'+*,C%151*%4521- $"#$E%;21-<*%$"%,+533*- !:#". !D#".!"#$"%&'()*+%,+'(+*- $"#$9 !"#$"%&'()*+%,+'(+*- $E#".!"#$.%/+'(01)%23-'+*%4(56%7*(,851%9%+5%: $"#.9 !"#$.%/+'(01)%23-'+*%4(56%7*(,851%9%+5%: $!#".!"#$.%;21-<*%"=%23-'+*- E$#$$ !"#$.%;21-<*%"=%23-'+*- !"#$9%>3-'+*%+5%7*(,851%:%,2??**-*- E9#$$ !"#$9%>3-'+*%+5%7*(,851%:%,2??**-*- !.#$9%&'()*+%,+533*- !.#$9%&'()*+%,+533*-
  • 37. Management Agent • manages life cycle of bundles • controls package sharing policies • controls starting/stopping !"#$%"&'($)&%*+,-./'0 1/'&%"2&)$.$),-$/3 45&%!"#$%6++$,3)& order 7&+&,8&%9:%;&'8$/3%9<= >?3&%=@@A • implements a security
  • 38. !"#"$%!%#&'"$%#& *'.#"/0#, '('.# "#10)-2#$34 (/"!340)6 3(*5 !"#$%&'(%)$ "!*')+#,-
  • 39. Management Agent !"#"$%!%#&'"$%#& *'.#"/0#, '('.# "#10)-2#$34 (/"!340)6 3(*5 !"#$%&'(%)$ "!*')+#,- • identification, uniquely identifies a target • discovery, provides mechanism to find server • scheduler, periodically triggers updates
  • 40. Deployment Admin • versioned set of artifacts • transactional install/update • fix packages provide deltas • signing makes them secure • extensible through resource processors !"#$%! 0"&"$%0%&!. "$%&! !"#$%! /2,%&! *#(+,-,(&,&$. 0"&"$%0%&!. &%!'(#) -%#+%# "$%&! !"#$%! 0"&"$%0%&!. "$%&! /(0*(&%&!. #%*(-,!(#1
  • 41. demo
  • 42. Angelo van der Sijpt software engineer at Luminis / Apache ACE committer angelo.vandersijpt@luminis.nl @_angelos
  • 43. Further reading • www.luminis-technologies.com • cwiki.apache.org/ACE/ • cwiki.apache.org/FELIX/ • Or ask me: angelo.vandersijpt@luminis.nl

Editor's Notes

  1. - Who am I? Angelo, Luminis, Apache ACE committer - We will show a case that feels familiar to most of us, and use that as a showcase for using component technology and deployment. - Will go into OSGi a little, - I will show what dynamic deployment is all about - And wrap up with a demo
  2. You start out with the idea of a great drawing application
  3. You start out with a monolithic application http://www.flickr.com/photos/minegro/3097817447/
  4. Growing software always has its peril. Customers will start demanding &amp;#x2018;specials&amp;#x2019; you don&amp;#x2019;t want everyone to have, since you might want to charge for them. The specials start cluttering up your code, making it very hard to maintain
  5. Growing software always has its peril. Customers will start demanding &amp;#x2018;specials&amp;#x2019; you don&amp;#x2019;t want everyone to have, since you might want to charge for them. The specials start cluttering up your code, making it very hard to maintain
  6. Build times start ramping up: engineers fire up a build shortly before lunch so they can see the results before going home that evening. http://xkcd.com/303/
  7. It soon becomes hard to enforce your architecture, due to all of the specials that need to &amp;#x2018;hook in&amp;#x2019; somewhere http://www.flickr.com/photos/lance_mountain/142158155/sizes/o/ http://www.answersingenesis.org/assets/images/articles/utp/chap8/userkafs-pyramid.jpg
  8. It soon becomes hard to enforce your architecture, due to all of the specials that need to &amp;#x2018;hook in&amp;#x2019; somewhere http://www.flickr.com/photos/lance_mountain/142158155/sizes/o/ http://www.answersingenesis.org/assets/images/articles/utp/chap8/userkafs-pyramid.jpg
  9. You have a load of code, nicely communicating through interfaces. Note that in many applications some sort of layering shows up.
  10. We overlay the Java packages here. These are quite fixed: how long would ik take you to restructure your packages? This really is the basis for subsequently designing both: - your package view / development view - your deployment view Reference the 4+1 view here: - to remain agile, you have to constantly manage your dependencies: -&gt; test, how quickly could you completely redesign your packages??? (hours, days, weeks?)
  11. So, we group these packages into components; this could be the basis of your package/deployment view. Note that while packages are rather fixed, carving up this package space isn&amp;#x2019;t necessarily: we can rather easily change the packaging, or even have various forms together.
  12. (from osgi.org) OSGi is based on the &amp;#x201C;home gateway&amp;#x201D; market, but later on profiled itself as &amp;#x2018;universal middleware&amp;#x2019;. Now, it just uses the term &amp;#x2018;dynamic module system&amp;#x2019;. OSGi is often seen as an application server, but it actually spans the range from embedded devices to enterprise servers.
  13. The specification consists of two parts: a core specification and a service compendium. The core describes the framework itself and some core services. The compendium describes a lot of service interfaces, standardized so different implementations can be substituted easily. Of most of these services, multiple open source implementations exist already. Recently, version 4.2 of the specification has been has been released, focussing mostly on enterprise-related elements.
  14. The framework itself is build out of a couple of layers, starting at the bottom with the execution environment, which describes the exact set of Java API&amp;#x2019;s that are considered part of the environment. By having different environments, bundles can specify for example if they can run on Java 1.4, 5 or 6. You can even make your own environments. On top of that, the module, life cycle and service layers are built.
  15. At the module layer, the software is grouped into bundles (also known as plugins in Eclipse), where each bundle contains zero or more Java packages and optionally some other resources or even native libraries. Some of these packages are exported, meaning they can be used by other bundles, others are private and only visible within a specific bundle. Packages that are exported by one bundle, can be imported by another. The exporter specifies a version number for a package. The importer can specify a range of versions it is compatible with. At run-time the framework will resolve such dependencies. All this allows you to keep implementations private, only exposing API&amp;#x2019;s.
  16. On top of that, the life-cycle layer determines the life-cycle of individual bundles. Basically, bundles can be installed, started, stopped and uninstalled. Furthermore, an installed bundle can be updated anytime. Finally, you can uninstall a bundle if you don&amp;#x2019;t need it anymore. The &amp;#x201C;starting&amp;#x201D; and &amp;#x201C;stopping&amp;#x201D; states have hooks for you as the bundle developer to actually make your bundle do something. By implementing the BundleActivator interface, the framework will invoke your start() and stop() methods. You will also get a BundleContext which is basically a reference to the API to talk to the container.
  17. Finally, the service layer contains a registry where services are published. Each bundle can register any number of services in the service registry. A service is registered using the fully qualified name of its interface. Furthermore, you can add any number of properties to this service. Both the name and properties can then be used again by others that query the registry. A fast and powerful LDAP based query language is used for that.
  18. The compendium, as mentioned before, contains an extensive list of standard service descriptions. Services like HTTP, logging, preferences and pluggable XML parsers are things that a lot of applications share and by sticking to these services, you get excellent substitutability, where you can develop with light weight implementations and then at runtime switch to more heavy weight ones.
  19. at the very least, your developers are happy now: they have components, and the complexity of the codebase is manageable. Your support personnel isn&amp;#x2019;t http://www.flickr.com/photos/mpsfender182/2681841205/
  20. at the very least, your developers are happy now: they have components, and the complexity of the codebase is manageable. Your support personnel isn&amp;#x2019;t http://www.flickr.com/photos/mpsfender182/2681841205/
  21. Goals of Dynamic Deployment
  22. What exactly is deployment?
  23. What exactly is deployment?
  24. History is important
  25. History is important
  26. History is important
  27. The topology. Disclosure: I am an Apache ACE committer, Apache ACE is an open source project that aims to build a system with the characteristics described before.
  28. Leaving the topology for a while, let&amp;#x2019;s look at the logical aspects.
  29. First: DEPENDENCY MANAGEMENT Note that the repository has versions too...
  30. FEEDBACK
  31. management agent stores all life cycle related events in an audit log this log gets synchronized back to the server There is a part I did not yet talk about: the management agent.
  32. DEPLOYMENT Leverages standard OSGi features; &amp;#x2018;management agent&amp;#x2019; is mentioned in the spec, but not as a component. - module / lifecycle layer - PackageAdmin - StartLevels - ConditionPermissionAdmin
  33. Management agent is a set of activities, which can be deployed as a (number of) component(s), but also added into the framework.
  34. We borrowed a little something from the OSGi specification, known as the Deployment admin Now, how does that all fit together?
  35. Way too dangerous; I prepared some screencasts. http://dl.dropbox.com/u/2438787/www/2009-10/1-Community%20edition.mov http://dl.dropbox.com/u/2438787/www/2009-10/2-Pro%20edition.mov http://dl.dropbox.com/u/2438787/www/2009-10/3-Specials.mov http://dl.dropbox.com/u/2438787/www/2009-10/4-Customer%20support.mov