SlideShare a Scribd company logo
OOOOOOSGiSGiSGiSGiSGiSGi aaaaaannnnnndddddd tttttthhhhhheeeeee EEEEEEntntntntntnteeeeeerrrrrrpppppprrrrrriiiiiisesesesesese
AAAAAA mmmmmmaaaaaatctctctctctchhhhhh mmmmmmaaaaaaddddddeeeeee iiiiiin an an an an an a .................. bbbbbbooooooxxxxxx??????
Holly Cummins
Paris Java User Group
June 8, 2010
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 2
AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg
In the beginning, there were bits ...
0101011101001001010010010011011101101101101
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 3
AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg
Then came words ...
mov ah,9
mov dx,offset hello_message
int 21h
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 4
AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg
... functions and libraries ...
#include <stdio.h>
main() {
printf ("Hello World!n");
}
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 5
AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg
... objects ...
public class HelloWorldSayer {
public void sayHello() {
System.out.println("Hello, world!n");
}
}
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 6
AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg
... and now - Enterprise OSGi
<service ref="helloservice" interface="helloworld.HelloWorldService" />
public class HelloWorldClient {
HelloWorldService service = null;
public void startUp() {
service.hello();
}
}
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 7
WWWWWWhhhhhhaaaaaatttttt wwwwwwaaaaaassssss wwwwwwrrrrrroooooonnnnnngggggg wwwwwwiiiiiitttttthhhhhh wwwwwwhhhhhheeeeeerrrrrreeeeee wwwwwweeeeee wwwwwweeeeeerrrrrreeeeee??????
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 8
WWWWWWhhhhhhaaaaaatttttt wwwwwwaaaaaassssss wwwwwwrrrrrroooooonnnnnngggggg wwwwwwiiiiiitttttthhhhhh wwwwwwhhhhhheeeeeerrrrrreeeeee wwwwwweeeeee wwwwwweeeeeerrrrrreeeeee??????
A question of scale
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 9
IDL JDBC JNDI JAXP JAAS JMX RMI-IIOP
EEEEEEnnnnnnteteteteteterrrrrrpppppprrrrrriiiiiisesesesesese AAAAAAPPPPPPIIIIIIssssss iiiiiinnnnnn JJJJJJaaaaaavavavavavava SSSSSSEEEEEE ((((((RRRRRReeeeeeqqqqqquuuuuuiiiiiirrrrrreeeeeedddddd ffffffoooooorrrrrr JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE))))))
Servlet JSP
WWWWWWeeeeeebbbbbb CCCCCCoooooonnnnnntatatatatataiiiiiinnnnnneeeeeerrrrrr
JavaMailJAF
JAX-RPC
JAX-WS
WebServices
WSMetadata
JMS
JTA
JACC
JAXR
Management
JPA
EJB
SAAJ
HTTP/SSL
Direct dependency
Optional dependencies
JSTL
JSF
JAXB
JCA
Debug
Common
Annotations
JJJJJJaaaaaavavavavavava EEEEEEEEEEEE WWWWWWeeeeeebbbbbb tetetetetetechchchchchchnnnnnnoooooollllllooooooggggggiiiiiieeeeeessssss
StAX
Indirect (soft) dependency
JAX-RS
JASPIC
CDI&DI
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 10
IDL JDBC JNDI JAXP JAAS JMX RMI-IIOP
EEEEEEnnnnnntttttteeeeeerrrrrrpppppprrrrrriiiiiisssssseeeeee AAAAAAPPPPPPIIIIIIssssss iiiiiinnnnnn JJJJJJaaaaaavavavavavava SSSSSSEEEEEE ((((((RRRRRReeeeeeqqqqqquuuuuuiiiiiirrrrrreeeeeedddddd ffffffoooooorrrrrr JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE))))))
Servlet JSP
WWWWWWeeeeeebbbbbb CCCCCCoooooonnnnnnttttttaaaaaaiiiiiinnnnnneeeeeerrrrrr
JavaMailJAF
JAX-RPC
JAX-WS
Web
Services
WS
Metadata
JMS
JTA
JACC
JAXR
Manage
ment
JPA
EJB
SAAJ
HTTP/SSL
Direct dependency
Optional dependencies
JSTL
JSF
JAXB
JCA
Debug
Comm
on
Annot
ations
JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE WWWWWWeeeeeebbbbbb tttttteeeeeechchchchchchnnnnnnoooooollllllooooooggggggiiiiiieeeeeessssss
StAX
Indirect (soft) dependencyJAX-RS
JASPIC
CDI&DI
((((((ccccccaaaaaappppppaaaaaabbbbbbiiiiiilllllliiiiiittttttyyyyyy ============ bbbbbbllllllooooooaaaaaatttttt))))))??????
HTTP Session Replication Connection Management Persistence Providers User Registries Event Mgmt
Logging and Tracing MBean Server
Admin Console
and scripting
DataSources Messaging Engines Security
Transport Channels Workload Management
HTTP Serving
and routing
High Availability
Management
Transaction Logging
and Recovery
Thread management Classloading Provisioning Monitoring
Policy and SLA
mgmt Configuration
………………
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 11
I DL J DB C J ND I J A XP J AAS J MX RMI - I I OP
EEEEEEnnnnnntttttteeeeeerrrrrrprprprprprpriiiiiiseseseseseseAAAAAAPPPPPPIIIIIIssssss iiiiiinnnnnnJJJJJJaaaaaavvvvvvaaaaaaSSSSSSEEEEEE ((((((RRRRRReeeeeeququququququiiiiiirerererereredddddd fffffforororororor JJJJJJaaaaaavvvvvvaaaaaaEEEEEEEEEEEE))))))
S e r vl e t J S P
WWWWWWeeeeeebbbbbb CCCCCCononononononttttttaaaaaainininininineeeeeerrrrrr
JavaMailJAF
JAX-RPC
JAX-WS
WebServices
WSMetadata
JMS
JTA
JACC
JAXR
Management
JPA
EJB
SAAJ
HTTP/SSL
Di r e c t d e p e n de n c y
Opt i o na l d e p e nd e nc i e s
JSTL
JSF
JAXB
JCA
Debug
CommonAnnotations
JJJJJJaaaaaavvvvvvaaaaaaEEEEEEEEEEEE WWWWWWeeeeeebbbbbb tttttteeeeeecccccchhhhhhnnnnnnoooooollllllogogogogogogiiiiiieeeeeessssss
StAX
I nd i r e c t ( s o f t ) d e p e n d e nc y
JAX-RS
JASPIC
CDI&DI
BBBBBBeeeeeeyyyyyyoooooonnnnnndddddd JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE………………
HTTP Session Replication Connection Management Persistence Providers User Registries Event Mgmt
Logging and Tracing MBean Server
Admin Console
and scripting
DataSources Messaging Engines Security
Transport Channels Workload Management
HTTP Serving
and routing
High Availability
Management
Transaction Logging
and Recovery
Thread management Classloading Provisioning Monitoring
Policy and SLA
mgmt Configuration
………………
Batch Telephony BPM
Dynamic
Scripting
SCA
Business
Rules
Complex Event
Processing
………………
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 12
MMMMMMoooooodddddduuuuuulalalalalalarrrrrriiiiiittttttyyyyyy iiiiiinnnnnnssssssiiiiiiddddddeeeeee EEEEEEnnnnnntttttteeeeeerrrrrrpppppprrrrrriiiiiisssssseeeeee ppppppllllllaaaaaattttttffffffoooooorrrrrrmmmmmmssssss
The major AppServer and Integration vendors and Open Source
communities have all embraced OSGi for their own internal
architecture
• IBM WebSphere, Oracle WebLogic, Red Hat JBoss, Sun
GlassFish, SpringSource dm Server, Paremus Service Fabric,
Eclipse Platform, Apache Geronimo, (non-exhaustive list)

http://www.osgi.org/wiki/uploads/News/2008_09_16_worldwide_market.pdf
These complex engineering projects required a modular
approach to development as they evolved and grew
• Breaking the problem into well-defined coherent modules
enables development teams to focus on their area of
concern.
• OSGi not only enables but enforces modularity
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 13
Java Platform Modularity
• Classes encapsulate data
• Packages contain classes
• Jars contain packages
Class visibility:
• private, package private, protected,
public
No “jar scoped” access modifiers.
No means for a jar to declare its dependencies.
No versioning.
Jars have no modularization
characteristics
• At runtime there is just a collection of classes
on a global classpath
Jar
PackagePackage
ClassClass
PackagePackage
ClassClass
ClassClass
PackagePackage
ClassClass
ClassClass
PPPPPPrrrrrroooooobbbbbblllllleeeeeemmmmmmssssss wwwwwwiiiiiitttttthhhhhh JJJJJJAAAAAARRRRRRssssss
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 14
JJJJJJaaaaaavvvvvvaaaaaa VVVVVVMMMMMM
lllllloooooogggggg444444jjjjjj
bbbbbbaaaaaarrrrrrccccccooooooddddddeeeeee444444jjjjjj
aaaaaaxxxxxxiiiiiissssss
bbbbbbaaaaaattttttiiiiiikkkkkk
ccccccoooooommmmmmmmmmmmoooooonnnnnnssssss
ddddddeeeeeerrrrrrbbbbbbyyyyyy
ffffffoooooopppppp
eeeeeezzzzzzmmmmmmoooooorrrrrrpppppphhhhhh
ffffffrrrrrreeeeeeeeeeeemmmmmmaaaaaarrrrrrkkkkkkeeeeeerrrrrr
hhhhhhttttttttttttppppppuuuuuunnnnnniiiiiitttttt
jjjjjjaaaaaakkkkkkaaaaaarrrrrrttttttaaaaaa
jjjjjjccccccllllll
jjjjjjssssssoooooonnnnnn
jjjjjjddddddbbbbbbmmmmmm
jjjjjjddddddoooooommmmmm
jjjjjjeeeeeennnnnnkkkkkkssssss
jjjjjjppppppoooooossssss111111888888
jjjjjjyyyyyytttttthhhhhhoooooonnnnnn
llllllooooooooooookkkkkkssssss
lllllluuuuuucccccceeeeeennnnnneeeeee
mmmmmmaaaaaaiiiiiillllll
mmmmmmxxxxxx444444jjjjjj
nnnnnnaaaaaammmmmmiiiiiinnnnnngggggg
jjjjjjeeeeeettttttttttttyyyyyy
ppppppooooooiiiiii
rrrrrreeeeeessssssoooooollllllvvvvvveeeeeerrrrrr
rrrrrroooooommmmmmeeeeee
sssssseeeeeerrrrrriiiiiiaaaaaalllllliiiiiizzzzzzeeeeeerrrrrr
sssssseeeeeerrrrrrvvvvvvlllllleeeeeettttttssssss
ttttttoooooommmmmmccccccaaaaaatttttt
vvvvvveeeeeelllllloooooocccccciiiiiittttttyyyyyy
wwwwwwssssss------ccccccoooooommmmmmmmmmmmoooooonnnnnnssssss
xxxxxxaaaaaallllllaaaaaannnnnn
wwwwwwssssssddddddllllll444444jjjjjj
xxxxxxeeeeeerrrrrrcccccceeeeeessssss
xxxxxxmmmmmmllllllggggggrrrrrraaaaaapppppphhhhhhiiiiiiccccccssssss
xxxxxxmmmmmmllllllrrrrrrppppppcccccc
xxxxxxmmmmmmllllllaaaaaappppppiiiiiissssss
............
ggggggeeeeeerrrrrroooooonnnnnniiiiiimmmmmmoooooo
bbbbbbsssssshhhhhh
bbbbbbssssssffffff
gggggguuuuuuiiiiiiaaaaaapppppppppppp
hhhhhhhhhhhhffffffaaaaaacccccciiiiiilllllliiiiiittttttyyyyyy
mmmmmmaaaaaannnnnnuuuuuuffffffaaaaaacccccctttttt......
mmmmmmaaaaaarrrrrrkkkkkkeeeeeettttttiiiiiinnnnnngggggg
mmmmmmiiiiiinnnnnneeeeeerrrrrrvvvvvvaaaaaa
aaaaaaccccccccccccoooooouuuuuunnnnnnttttttiiiiiinnnnnngggggg
aaaaaasssssssssssseeeeeettttttmmmmmmaaaaaaiiiiiinnnnnntttttt
bbbbbbaaaaaasssssseeeeee
bbbbbbiiiiii
ccccccaaaaaattttttaaaaaalllllliiiiiinnnnnnaaaaaa
ccccccoooooommmmmmmmmmmmoooooonnnnnn
ooooooaaaaaaggggggiiiiiissssss
oooooorrrrrrddddddeeeeeerrrrrr
eeeeeebbbbbbaaaaaayyyyyy
ccccccoooooonnnnnntttttteeeeeennnnnntttttt
ddddddaaaaaattttttaaaaaaffffffiiiiiilllllleeeeee
eeeeeeccccccoooooommmmmmmmmmmmeeeeeerrrrrrcccccceeeeee
eeeeeennnnnnttttttiiiiiittttttyyyyyy
ggggggoooooooooooogggggglllllleeeeeebbbbbbaaaaaasssssseeeeee
ooooooffffffbbbbbbiiiiiizzzzzz
wwwwwwiiiiiiddddddggggggeeeeeetttttt
mmmmmmiiiiiinnnnnniiiiiillllllaaaaaannnnnngggggg
ppppppaaaaaarrrrrrttttttyyyyyy
ppppppoooooossssss......
pppppprrrrrroooooodddddduuuuuucccccctttttt
wwwwwwoooooorrrrrrkkkkkkeeeeeeffffffffffffoooooorrrrrrtttttt
wwwwwwoooooorrrrrrkkkkkkfffffflllllloooooowwwwww
………………
ssssssuuuuuunnnnnnjjjjjjcccccceeeeee______pppppprrrrrroooooovvvvvv......
pppppplllllluuuuuuggggggiiiiiinnnnnn
jjjjjjsssssssssssseeeeee
jjjjjjcccccceeeeee
rrrrrrtttttt
ddddddnnnnnnssssssnnnnnnssssss
............
………………
CCCCCCllllllaaaaaassssssssssss
NNNNNNooooootttttt
FFFFFFoooooouuuuuunnnnnndddddd
EEEEEExxxxxxcccccceeeeeeppppppttttttiiiiiioooooonnnnnn
BBBBBBeeeeeeggggggiiiiiinnnnnnBBBBBBeeeeeeggggggiiiiiinnnnnn
HHHHHHeeeeeerrrrrreeeeeeHHHHHHeeeeeerrrrrreeeeee
TTTTTThhhhhheeeeee GGGGGGlllllloooooobbbbbbaaaaaallllll CCCCCCllllllaaaaaassssssssssssppppppaaaaaatttttthhhhhh
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 15
PPPPPPrrrrrroooooobbbbbblllllleeeeeemmmmmmssssss wwwwwwiiiiiitttttthhhhhh EEEEEEAAAAAARRRRRRssssss/W/W/W/W/W/WAAAAAARRRRRRssssss
Enterprise Apps have isolated
classpaths but…
Across apps - each archive typically contains
all the libraries required by the application
• Common libraries/frameworks get installed with
each application
• Multiple copies of libraries in memory
Within apps - 3rd
party libraries
consume other 3rd
party libraries
leading to version conflicts
wwwwwweeeeeebbbbbbAAAAAA......wwwwwwaaaaaarrrrrr
WEB-INF/classes/servletA.class
WEB-INF/lib/spring.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/junit.jar…
wwwwwweeeeeebbbbbbBBBBBB......wwwwwwaaaaaarrrrrr
WEB-INF/classes/servletB.class
WEB-INF/lib/spring.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/junit.jar…
wwwwwweeeeeebbbbbbCCCCCC......wwwwwwaaaaaarrrrrr
WEB-INF/classes/servletC.class
WEB-INF/lib/spring.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/junit.jar…
plankton.v1
plankton.v2
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 16
OOOOOOSSSSSSGGGGGGiiiiii –––––– TTTTTThhhhhheeeeee DDDDDDyyyyyynnnnnnaaaaaammmmmmiiiiiicccccc MMMMMMoooooodddddduuuuuulllllleeeeee SSSSSSyyyyyysssssstttttteeeeeemmmmmm ffffffoooooorrrrrr JJJJJJaaaaaavvvvvvaaaaaa
The OSGi Service Platform specifies a
modular architecture for dynamic
component based systems
• Execution Environment
• Module Layer
• Life Cycle Layer
• Service Layer
Runs on a variety of standard Java
profiles.
Introduces Bundles as modules
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 17
OOOOOOSSSSSSGGGGGGiiiiii CCCCCClalalalalalassssssssssss LLLLLLooooooaaaaaaddddddiiiiiinnnnnngggggg
Class sharing and visibility is based on
declarative dependencies
• Not constrained by hierarchical class
loader trees built up at runtime.
• OSGi f/w takes care of working out the
dependencies.
Multiple versions of bundles supported
concurrently.
No global, flat classpath to search. Each bundle has its own classloader /
classpath. More efficient for large systems.
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 18
BBBBBBuuuuuunnnnnnddddddlllllleeeeee MMMMMMeeeeeettttttaaaaaaddddddaaaaaattttttaaaaaa
The higher-level module is the “bundle”
which is a normal jar containing:
•Classes
•Resources
•Manifest
Manifest­Version: 1.0
Bundle­ManifestVersion: 2
Bundle­Name: MyService bundle
Bundle­SymbolicName: com.sample.myservice
BBBBBBuuuuuunnnnnnddddddlllllleeeeee­­­­­­VVVVVVeeeeeerrrrrrssssssiiiiiioooooonnnnnn: 1.0.0
Bundle­Activator: ccccccoooooommmmmm......ssssssaaaaaammmmmmpppppplllllleeeeee......mmmmmmyyyyyysssssseeeeeerrrrrrvvvvvviiiiiicccccceeeeee......AAAAAAccccccttttttiiiiiivvvvvvaaaaaattttttoooooorrrrrr
IIIIIImmmmmmppppppoooooorrrrrrtttttt­­­­­­PPPPPPaaaaaacccccckkkkkkaaaaaaggggggeeeeee:::::: 
 org.apache.commons.logging;version="1.0.4"
EEEEEExxxxxxppppppoooooorrrrrrtttttt­­­­­­PPPPPPaaaaaacccccckkkkkkaaaaaaggggggeeeeee:::::: 
 com.sample.myservice.api;version="1.0.0"
META-INF/MANIFEST.MF
MMMMMMuuuuuullllllttttttiiiiiipppppplllllleeeeee vvvvvverererererersisisisisisioooooonnnnnnssssss of bundles can be active concurrently.
Depepepepepepeeeeeennnnnnddddddenenenenenencccccciiiiiieseseseseses on other bundles are explicitly declared
PPPPPPaaaaaacccccckkkkkkaaaaaaggggggeeeeee vivivivivivisisisisisisibbbbbbiiiiiilllllliiiiiittttttyyyyyy outside the bundle is declared.
• Other packages are encapsulated by the bundle.
Bundles can act on lifecycle changes
Eclipse tooling provides convenient editors for the manifest
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 19
BBBBBBuuuuuunnnnnnddddddlllllleeeeee LLLLLLiiiiiiffffffeeeeeeccccccyyyyyycccccclllllleeeeee
Optional BundleActivator class has opportunityOptional BundleActivator class has opportunity
to initialize and cleanup a bundleto initialize and cleanup a bundle
• Header in Manifest refers to this classHeader in Manifest refers to this class
BundleActivator has 2 methodsBundleActivator has 2 methods
• Start: Initialize bundleStart: Initialize bundle
• Stop: CleanupStop: Cleanup
INSTALLEDINSTALLED
RESOLVEDRESOLVED
UNINSTALLEDUNINSTALLED
ACTIVEACTIVE
STOPPINGSTOPPING
STARTINGSTARTING
startstart
stopstop
Resolution of dependencies at deployment time. If resolution fails, bundle isResolution of dependencies at deployment time. If resolution fails, bundle is
not available for use.not available for use.
• No ClassNotFoundExceptions at runtimeNo ClassNotFoundExceptions at runtime
Bundle lifecycle is dynamic and independent of the rest of the f/w.Bundle lifecycle is dynamic and independent of the rest of the f/w.
• BundleListener can be registered for bundle state change events.BundleListener can be registered for bundle state change events.
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 20
OOOOOOSSSSSSGGGGGGiiiiii SSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeessssss
OSGi intrinsically supports SOA through its service layer.
The core platform includes a non-durable “Service Registry” component.
Services are published to and discovered from this Service Registry.
• Services are the primary means of collaboration between bundles.
An OSGi service is a POJO published to the SR under one or more Java
interface names with optional key/value pair metadata
• Service discovery can be filtered on the key/value metadata
Services are fully dynamic and typically have the same lifecycle as the bundle
that provides them.
S
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 21
WWWWWWhhhhhhaaaaaatttttt aaaaaabbbbbboooooouuuuuutttttt tttttthhhhhheeeeee AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnnssssss??????
The enterprise landscape until recently has been OSGi on the
inside only. Why?
Primarily because:
• Java EE defines an enterprise application programming model and
container contracts to honour it
• OSGi has typically defined platform specifications and services for
those platforms.
 It hasn’t had much to say on application concerns such as
■ What's the component model?
■ What's the persistence architecture?
■ How are qualities of service configured?
■ Remoting
This has changed in OSGi v4.2.
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 22
OOOOOOSSSSSSGGGGGGiiiiii EEEEEEnnnnnntttttteeeeeerrrrrrpppppprrrrrriiiiiisssssseeeeee SSSSSSppppppeeeeeecccccciiiiiiffffffiiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn
Release date – 22 March 2010
• The product of the OSGi Enterprise Expert Group (EEG)
Brings Enterprise technologies and OSGi together
Using existing Java SE/EE specifications:
• JTA, JPA, JNDI, JMX, WebApps…
Adds Spring-derived component model and dependency
injection container
JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE pppppprrrrrroooooovvvvvviiiiiiddddddeeeeeessssss tttttthhhhhheeeeee ccccccoooooorrrrrreeeeee eeeeeennnnnntttttteeeeeerrrrrrpppppprrrrrriiiiiisssssseeeeee aaaaaapppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn pppppprrrrrroooooogrgrgrgrgrgraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg
mmmmmmooooooddddddeeeeeellllll
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 23
WWWWWWhhhhhhaaaaaatttttt''''''ssssss tttttthhhhhheeeeee bbbbbbeeeeeennnnnneeeeeeffffffiiiiiitttttt??????
Deploying modules as OSGi bundles
• simplifies reuse between applications
• encourages (and enforces) modular design
• provides versioning
• enables dynamic module updates.
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 24
NNNNNNeeeeeewwwwww OOOOOOppppppeeeeeennnnnn SSSSSSoooooouuuuuurrrrrrcccccceeeeee AAAAAAccccccttttttiiiiiivvvvvviiiiiittttttiiiiiieeeeeessssss
Apache “Aries” created as a new Apache
incubator project in Sep 2009:
• to provide enterprise OSGi spec implementations
• to provide an environment for collaboration and innovation about the
standards
• to build a broad development community
Eclipse Enterprise Modules (“Gemini”)
- currently being provisioned.
• Sub-projects will provide EEG spec implementations
http://www.eclipse.org/proposals/gemini/
Holly Cummins 25
HHHHHHiiiiiissssssttttttoooooorrrrrryyyyyy
“Aries” created as a new Apache incubator project in Sep 2009
Available to use now
– 0.1 version released last month
– Integrated into WebSphere V7 Feature Pack for OSGi
Applications – released last week
Independent of
• OSGi framework provider
• Integration/server runtime
43 committers from a broad range of companies
Holly Cummins 26
AAAAAArrrrrriiiiiieeeeeessssss CCCCCCoooooonnnnnntttttteeeeeennnnnntttttt iiiiiinnnnnncccccclllllluuuuuuddddddeeeeeessssss………………
Blueprint container
JPA integration
JTA integration
JMX
JNDI integration
Application assembly and deployment
META-INF/services handler
Samples, documentation, integrator’s guide
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 27
AAAAAArrrrrriiiiiieeeeeessssss BBBBBBlulululululueeeeeepppppprrrrrriiiiiinnnnnntttttt CCCCCCoooooonnnnnnttttttaaaaaaiiiiiinnnnnneeeeeerrrrrr
A dependency Injection container
• Standardizes established Spring conventions
• Part of the server runtime (compared to Spring which is part of the app.)
Configuration and dependencies declared in XML “module blueprint”, which is a
standardization of Spring “application context” XML.
• Extended for OSGi: publishes and consumes components as OSGi services
Simplifies using OSGi services
• No ServiceTrackers
• No lookups
Managed beans
publishes
service
consumes
service
Blueprint bundle
OSGI-INF/blueprint/
blueprint.xml
A static assembly and configuration of
components (POJOs)
Holly Cummins
EEEEEExxxxxxppppppllllllooooooiiiiiittttttiiiiiinnnnnngggggg BBBBBBlulululululueeeeeepppppprrrrrriiiiiinnnnnntttttt CCCCCCoooooommmmmmppppppoooooonnnnnneeeeeennnnnnttttttssssss aaaaaannnnnndddddd SSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeessssss
publicpublicpublicpublicpublicpublic classclassclassclassclassclass ShopImpl {
privateprivateprivateprivateprivateprivate BillingService billingService;
voidvoidvoidvoidvoidvoid setBillingService(BillingService srv) {
billingService = srv;
}
voidvoidvoidvoidvoidvoid process(Order o) {
billingService.bill(o);
}
}
e-Commerce
<blueprint>
<bean id=”shop” class=”org.example.ecomm.ShopImpl”>
<property name=”billingService” ref=”billingService” />
</bean>
<reference id=”billingService”
interface=”org.example.bill.BillingService” />
</blueprint>
eeeeee-C-C-C-C-C-Coooooommemmemmemmemmemmerrrrrrcececececece bbbbbbuuuuuunnnnnnddddddlllllleeeeee
-injected service reference
-service can change over time
-can be temporarily absent
without the bundle caring
-managed by Blueprint container
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 29
JJJJJJaaaaaavvvvvvaaaaaa PPPPPPeeeeeerrrrrrssssssiiiiiisssssstttttteeeeeennnnnncccccceeeeee aaaaaannnnnndddddd PePePePePePerrrrrrssssssiiiiiisssssstttttteeeeeennnnnncccccceeeeee BBBBBBuuuuuunnnnnnddddddlelelelelelessssss
Each persistence bundle has its
standard JPA metadata located
through the Meta-Persistence
bundle header.
JPA Container locates a JPA Provider
• Registers a Provider-created
EntityManagerFactory service
for each PU
• Optionally injects an
EntityManager
org.apache.aries.jpa.container
Persistence bundle
BBBBBBuuuuuunnnnnnddddddlllllleeeeee MMMMMMaaaaaannnnnniiiiiiffffffeeeeeesssssstttttt
………………
Meta-Persistence:
OSGI-INF/persistence.xml
OSGI-INF/
persistence.xml
Used to build the
EntityManagerFactory
Managed EntityManagerFactory
Registered on behalf of the
persistence bundle
JPA Provider
javax.persistence.spi.
PersistenceProvider
service
createContainerEMF
(PersistenceUnitInfo)
Uses
Registers
EntityManagerFactory
service per PU
Entities
Uses
Holly Cummins 30
AAAAAArrrrrriiiiiieeeeeessssss JJJJJJPAPAPAPAPAPA CCCCCCoooooonnnnnnttttttaaaaaaiiiiiinnnnnneeeeeerrrrrr –––––– BBBBBBlllllluuuuuueeeeeepppppprrrrrriiiiiinnnnnntttttt IIIIIInnnnnntttttteeeeeeggggggrrrrrraaaaaattttttiiiiiioooooonnnnnn
<bbbbbblllllluuuuuuepepepepepeprrrrrriiiiiinnnnnntttttt xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:jta="http://aries.apache.org/xmlns/transactions/v1.0.0"
xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0">
<bbbbbbeaeaeaeaeaeannnnnn id=“appMgd“ class=“com.acme.AppManaged”>
<jjjjjjpapapapapapa::::::uuuuuunnnnnniiiiiitttttt property="emf" unitname="myUnit" />
</bea/bea/bea/bea/bea/beannnnnn>
<bbbbbbeaeaeaeaeaeannnnnn id="containerMgd“ class=“com.acme.Container”>
<jjjjjjpapapapapapa::::::ccccccoooooonnnnnntttttteeeeeexxxxxxtttttt property="em" unitname=“myUnit“/>
<jjjjjjttttttaaaaaa::::::ttttttrrrrrraaaaaannnnnnsasasasasasaccccccttttttiiiiiioooooonnnnnn method=“*" value=“Required" />
</bea/bea/bea/bea/bea/beannnnnn>
</b/b/b/b/b/blllllluuuuuuepepepepepeprrrrrriiiiiinnnnnntttttt>
Example blueprint with JPA resource injection and container-managed transactions
Holly Cummins 31
AAAAAArrrrrriiiiiieeeeeessssss JJJJJJTTTTTTAAAAAA iiiiiinnnnnntttttteeeeeeggggggrrrrrraaaaaattttttiiiiiioooooonnnnnn
Holly Cummins 32
AAAAAArrrrrriiiiiieeeeeessssss JJJJJJNDNDNDNDNDNDIIIIII iiiiiinnnnnntttttteeeeeeggggggrrrrrraaaaaattttttiiiiiioooooonnnnnn
Provides JNDI-based access to OSGi Service Registry
<<<<<<bbbbbblllllluuuuuueeeeeepppppprrrrrriiiiiinnnnnntttttt xxxxxxmmmmmmllllllnnnnnnssssss======..................>>>>>>
<<<<<<bbbbbbeeeeeeaaaaaannnnnn iiiiiidddddd======""""""bbbbbbllllllooooooggggggggggggiiiiiinnnnnnggggggSSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeeCCCCCCoooooommmmmmppppppoooooonnnnnneeeeeennnnnntttttt""""""
ccccccllllllaaaaaassssssssssss======""""""oooooorrrrrrgggggg......aaaaaappppppaaaaaacccccchhhhhheeeeee......aaaaaarrrrrriiiiiieeeeeessssss......BBBBBBllllllooooooggggggggggggiiiiiinnnnnnggggggSSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeeIIIIIImmmmmmppppppllllll"""""">>>>>>
<<<<<<//////bbbbbbeeeeeeaaaaaannnnnn>>>>>>
<<<<<<sssssseeeeeerrrrrrvvvvvviiiiiicccccceeeeee rrrrrreeeeeeffffff======""""""bbbbbbllllllooooooggggggggggggiiiiiinnnnnnggggggSSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeeCCCCCCoooooommmmmmppppppoooooonnnnnneeeeeennnnnntttttt""""""
iiiiiinnnnnntttttteeeeeerrrrrrffffffaaaaaacccccceeeeee======""""""oooooorrrrrrgggggg......aaaaaappppppaaaaaacccccchhhhhheeeeee......aaaaaarrrrrriiiiiieeeeeessssss......ssssssaaaaaammmmmmpppppplllllleeeeeessssss......bbbbbblllllloooooogggggg......aaaaaappppppiiiiii......BBBBBBllllllooooooggggggggggggiiiiiinnnnnnggggggSSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeee""""""//////>>>>>>
..................
<<<<<<//////bbbbbblllllluuuuuueeeeeepppppprrrrrriiiiiinnnnnntttttt>>>>>>
registerService
InitialContext ic = nnnnnneeeeeewwwwww InitialContext();
BloggingService blog= ic.lookup("osgi:services/"
+ BloggingService.ccccccllllllaaaaaassssssssssss.getName());
getService
A way for a Web component to access a
Blueprint componentOSGi
Service Registry
JNDI Context
Holly Cummins 33
AAAAAArrrrrriiiiiieeeeeessssss JJJJJJMMMMMMXXXXXX IIIIIInnnnnntttttteeeeeeggggggrrrrrraaaaaattttttiiiiiioooooonnnnnn
Implementation of OSGi JMX specification.
Aries JMX bundle automatically registers the JMX MBeans into any
javax.management.MBeanServer service in the OSGi Service
Registry.
JMX OSGi
Manager
<<MBean>>
Fram ework
MBean
<<MBean>>
Bund le State
MBean
<<MBean>>
Service St ate
MBean
<<MBean>>
Package St ate
MBean
<<MBean>>
Co nfiguratio n 
Ad min  MBean
<<MBean>>
Permis sion  
Ad min  MBean
<<MBean>>
Provisionin g 
ServiceMBean
<<MBean>>
User Adm in 
MBean
PermissionAdmin
ConfigurationAdmin
ProvisioningService
User Admin
MBeanServer
<<MBean>>
Blue print
MBean
Framework MBeans
Compendium MBeans
Additional Aries MBeans
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 34
WWWWWWeeeeeebbbbbb AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn BBBBBBuuuuuunnnnnnddddddlelelelelelessssss
Bundles are recognized as Web applications if they contain a
standard OSGi manifest header to identify the context path
 Web-ContextPath:
A hosting platform
• Listens for bundles starting & stopping with WAB content
• Hands the web components of to the Web Container to
manage.
Holly Cummins 35
AAAAAArrrrrriiiiiieeeeeessssss AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn AAAAAAsssssssssssseeeeeemmmmmmbbbbbblylylylylyly aaaaaannnnnndddddd DDDDDDeeeeeepppppplolololololoyyyyyy
Pluggable infrastructure for deployment of an application
– A collection of bundles forming a logical unit
– Packaged as an enterprise bundle archive (archive with .eba extn).
•An “Enterprise OSGi Application”.
Constituent bundles may be contained (“by-value”) in the .eba archive or referenced
in APPLICATION.MF
Only explicitly declared Services are exposed from the application.
Config by exception - absence of APPLICATION.MF means:
•application content is the set of bundles contained by-value plus any repository-hosted
dependencies identified during deployment.
AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn MMMMMMaaaaaannnnnniiiiiiffffffeeeeeesssssstttttt
Enumerates constituent bundles
Declares Application “externals”
blog.eba
blog-persistence.jar
blog.jar
blog-servlet.jar
BBBBBBuuuuuunnnnnnddddddlllllleeeeee RRRRRRepepepepepepososososososiiiiiittttttororororororyyyyyy
json4j.jar
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 36
wwwwwweeeeeebbbbbbAAAAAA......wwwwwwaaaaaarrrrrr
WEB-INF/classes/servletA.class
WEB-INF/lib/spring.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/junit.jar…
wwwwwweeeeeebbbbbbBBBBBB......wwwwwwaaaaaarrrrrr
WEB-INF/classes/servletB.class
WEB-INF/lib/spring.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/junit.jar…
wwwwwweeeeeebbbbbbCCCCCC......wwwwwwaaaaaarrrrrr
WEB-INF/classes/servletC.class
WEB-INF/lib/spring.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/junit.jar…
MMMMMMoooooodddddduuuuuulelelelelele RRRRRReeeeee------UUUUUUsssssseeeeee MMMMMMaaaaaaddddddeeeeee EEEEEEaaaaaassssssyyyyyy
NNNNNNoooooo JJJJJJaaaaaavavavavavava ccccccooooooddddddeeeeee cccccchhhhhhaaaaaannnnnngggggges;es;es;es;es;es; wwwwwwaaaaaarrrrrr mmmmmmoooooodddddduuuuuulllllleseseseseses ------>>>>>> bbbbbbuuuuuunnnnnnddddddlllllleseseseseses
CCCCCCoooooommmmmmmmmmmmoooooonnnnnn,,,,,, bbbbbbuuuuuunnnnnnddddddlllllleseseseseses mmmmmmaaaaaayyyyyy bbbbbbeeeeee eaeaeaeaeaeasisisisisisillllllyyyyyy ffffffaaaaaaccccccttttttoooooorrrrrredededededed oooooouuuuuutttttt ooooooffffff tttttthhhhhheeeeee WAWAWAWAWAWARRRRRRssssss aaaaaannnnnndddddd uuuuuusedsedsedsedsedsed aaaaaatttttt spspspspspspeeeeeeciciciciciciffffffiiiiiicccccc ververververververssssssiiiiiioooooonnnnnnssssss
wwwwwweeeeeebbbbbbAAAAAA......wwwwwwaaaaaabbbbbb
WEB-INF/classes/servletA.class
MEMEMEMEMEMETTTTTTAAAAAA------ININININININFFFFFF//////MAMAMAMAMAMANNNNNNIIIIIIFFFFFFEEEEEESSSSSSTTTTTT......MMMMMMFFFFFF
BBBBBBuuuuuunnnnnnddddddlllllleeeeee RRRRRRepepepepepepososososososiiiiiittttttororororororyyyyyy
WEB-INF/lib/spring.jar;version=“a.b.c”
WEB-INF/lib/commons-logging.jar;version=…
WEB-INF/lib/json4j.jar;version=…
WEB-INF/lib/junit.jar…
wwwwwweeeeeebbbbbbBBBBBB......wwwwwwaaaaaabbbbbb
WEB-INF/classes/servletB.class
MMMMMMEEEEEETTTTTTAAAAAA------ININININININFFFFFF//////MAMAMAMAMAMANNNNNNIFIFIFIFIFIFEEEEEESSSSSSTTTTTT......MMMMMMFFFFFF
wwwwwweeeeeebbbbbbC.C.C.C.C.C.wwwwwwaaaaaabbbbbb
WEB-INF/classes/servletC.class
MEMEMEMEMEMETTTTTTAAAAAA------ININININININFFFFFF//////MAMAMAMAMAMANNNNNNIIIIIIFFFFFFEEEEEESSSSSSTTTTTT......MMMMMMFFFFFF
Import-Package
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 37
BBBBBBuuuuuunnnnnnddddddlllllleeeeee------lllllleeeeeevvvvvveeeeeellllll MMMMMMaaaaaannnnnnaaaaaaggggggeeeeeemmmmmmeeeeeennnnnntttttt
WebSphere Administrative Console
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 38
DDDDDDeeeeeemmmmmmoooooo
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 39
OOOOOOnnnnnn lllllluuuuuucccccckkkkkk ..................
“I'm a great believer in luck and I find the harder I work, the more
I have of it.”
■ Thomas Jefferson
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 40
DDDDDDeeeeeemmmmmmoooooo
((((((mmmmmmaaaaaayyyyyybbbbbbeeeeee))))))
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 41
DDDDDDeeeeeemmmmmmoooooo
((((((mmmmmmaaaaaayyyyyybbbbbbeeeeee))))))
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 42
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 43
RRRRRRADADADADADAD NNNNNNeeeeeexxxxxxtttttt BBBBBBeeeeeettttttaaaaaa TTTTTToooooooooooolllllliiiiiinnnnnngggggg
OSOSOSOSOSOSGGGGGGiiiiii AAAAAAppppppplplplplplpliiiiiicacacacacacattttttiiiiiioooooonnnnnn PPPPPPlllllluuuuuuggggggiiiiiinnnnnn
WWWWWWAAAAAASSSSSS vvvvvv777777 OOOOOOSSSSSSGGGGGGiiiiii FFFFFFeeeeeePPPPPP TTTTTTeeeeeesssssstttttt
EEEEEEnnnnnnvvvvvviiiiiirrrrrroooooonnnnnnmmmmmmeeeeeennnnnntttttt
EEEEEEcccccclllllliiiiiippppppsssssseeeeee
WWWWWWTPTPTPTPTPTP PPPPPPDDDDDDEEEEEE
GGGGGGrrrrrraaaaaapppppphhhhhhiiiiiiccccccaaaaaallllll AAAAAApppppppppppplllllliiiiiicacacacacacattttttiiiiiioooooonnnnnn
EEEEEEddddddiiiiiittttttoooooorrrrrr
DDDDDDeeeeeevevevevevevellllllooooooppppppeeeeeerrrrrr PPPPPPrrrrrroooooodddddduuuuuuctctctctctctiiiiiivivivivivivittttttyyyyyy
(e.g. content assist, validation, re-factoring)
GGGGGGrrrrrraaaaaapppppphhhhhhiiiiiiccccccaaaaaallllll CCCCCCrrrrrreeeeeeaaaaaattttttiiiiiioooooonnnnnn
WWWWWWiiiiiizzzzzzaaaaaarrrrrrddddddssssss
CCCCCCrrrrrreeeeeeaaaaaattttttiiiiiioooooonnnnnn ////// IIIIIImmmmmmppppppoooooorrrrrrtttttt //////
EEEEEExpxpxpxpxpxpoooooorrrrrrtttttt ToToToToToTooooooollllllssssss
TTTTTTuuuuuuttttttoooooorrrrrriiiiiiaaaaaallllllssssss aaaaaannnnnndddddd
DDDDDDooooooccccccuuuuuummmmmmeeeeeennnnnnttttttaaaaaattttttiiiiiioooooonnnnnn
PPPPPPuuuuuubbbbbblllllliiiiiishshshshshsh aaaaaannnnnndddddd RRRRRRuuuuuunnnnnn
WWWWWWAAAAAASSSSSS vvvvvv777777 SSSSSSeeeeeerrrrrrvvvvvveeeeeerrrrrr SSSSSSuuuuuuppppppppppppoooooorrrrrrtttttt EEEEEEnnnnnnhhhhhhaaaaaannnnnncecececececedddddd VVVVVVaaaaaalllllliiiiiiddddddaaaaaattttttiiiiiioooooonnnnnn
FFFFFFrererererereeeeeee EEEEEEcccccclllllliiiiiippppppsssssseeeeee PPPPPPlllllluuuuuuggggggiiiiiinnnnnn ffffffoooooorrrrrr OOOOOOSSSSSSGGGGGGiiiiii AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnnssssss
Graphical tools to develop OSGi applications and bundles
Includes features that increase developer productivity
Creates OSGi Applications for any Aries-based server runtime.
Eclipse WTP 3.6 (Helios) M6 or later required
OOOOOOSSSSSSGGGGGGiiiiii AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn SSSSSSuuuuuuppppppppppppoooooorrrrrrtttttt iiiiiinnnnnn RRRRRRADADADADADAD BBBBBBeeeeeettttttaaaaaa
 Provide integrated development and test of OSGi
Applications on the WebSphere platform
 Integrated with Web Tools, JEE productivity tools, and other
capabilities in RAD
Supports deployment to WAS v7 OSGi FeP and includes the FeP
in the WAS Test Environment
Enhanced validation
FFFFFFrrrrrreeeeeeeeeeee ttttttoooooooooooolslslslslsls
https://www14.software.ibm.com/iwm/web/cc/
earlyprograms/rational/radob/index.shtml
http://www.ibm.com/developerworks/rational/downloads
/10/rationaldevtoolsforosgiapplications.html
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 44
RRRRRReeeeeessssssoooooouuuuuurrrrrrcccccceeeeeessssss
Apache Aries
• http://incubator.apache.org/aries/
Free tools
• http://www.ibm.com/developerworks/rational/downloads
/10/rationaldevtoolsforosgiapplications.html
IBM WebSphere Feature Pack for OSGi Applications and Java
Persistence API 2.0
• http://www-01.ibm.com/software/webservers/appserv/was/
featurepacks/osgi/
45
In the near future…
all major Java
enterprise runtimes
will support Apps
deployed as bundles
Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 46
AAAAAAnnnnnnyyyyyy qqqqqquuuuuueeeeeessssssttttttiiiiiioooooonnnnnnssssss??????
Holly Cummins 47
FFFFFFuuuuuuttttttuuuuuurrrrrreeeeeessssss
There are many new application-centric features that Aries may
develop including:
•message-driven blueprint components and services
•declarative role-based security for blueprint components
•annotation-based alternative to XML configuration
•resource-reference metadata and bindings
(Original Proposal: http://wiki.apache.org/incubator/AriesProposal)
Interested in getting involved?
•http://incubator.apache.org/aries/gettinginvolved.html

More Related Content

More from Holly Cummins

Six Myths and Paradoxes of Garbage Collection
Six Myths and Paradoxes of Garbage Collection Six Myths and Paradoxes of Garbage Collection
Six Myths and Paradoxes of Garbage Collection
Holly Cummins
 

More from Holly Cummins (20)

The Importance of Fun in the Workplace (late 2019)
The Importance of Fun in the Workplace (late 2019)The Importance of Fun in the Workplace (late 2019)
The Importance of Fun in the Workplace (late 2019)
 
People, Planet, Clouds
People, Planet, CloudsPeople, Planet, Clouds
People, Planet, Clouds
 
Nine Ways To Fail at Cloud Native
Nine Ways To Fail at Cloud NativeNine Ways To Fail at Cloud Native
Nine Ways To Fail at Cloud Native
 
Java Application Modernization Patterns and Stories from the IBM Garage
Java Application Modernization Patterns and Stories from the IBM GarageJava Application Modernization Patterns and Stories from the IBM Garage
Java Application Modernization Patterns and Stories from the IBM Garage
 
Tales from the devops transformation trenches
Tales from the devops transformation trenchesTales from the devops transformation trenches
Tales from the devops transformation trenches
 
Confessions of an Automation Addict
Confessions of an Automation AddictConfessions of an Automation Addict
Confessions of an Automation Addict
 
The Importance of Fun in the Workplace (2019)
The Importance of Fun in the Workplace (2019)The Importance of Fun in the Workplace (2019)
The Importance of Fun in the Workplace (2019)
 
The story of http://designsparkmarketplace.com
The story of http://designsparkmarketplace.comThe story of http://designsparkmarketplace.com
The story of http://designsparkmarketplace.com
 
Six Myths and Paradoxes of Garbage Collection
Six Myths and Paradoxes of Garbage Collection Six Myths and Paradoxes of Garbage Collection
Six Myths and Paradoxes of Garbage Collection
 
Cloud native is about culture, not containers
Cloud native is about culture, not containersCloud native is about culture, not containers
Cloud native is about culture, not containers
 
Cloudy with a Chance of Meatballs: Cloud Surprises for the Java Developer
Cloudy with a Chance of Meatballs: Cloud Surprises for the Java DeveloperCloudy with a Chance of Meatballs: Cloud Surprises for the Java Developer
Cloudy with a Chance of Meatballs: Cloud Surprises for the Java Developer
 
So You Say You Want a Chatbot Revolution
So You Say You Want a Chatbot RevolutionSo You Say You Want a Chatbot Revolution
So You Say You Want a Chatbot Revolution
 
Java performance - not so scary after all
Java performance - not so scary after allJava performance - not so scary after all
Java performance - not so scary after all
 
Innovation Stories from the Bluemix Garage
Innovation Stories from the Bluemix GarageInnovation Stories from the Bluemix Garage
Innovation Stories from the Bluemix Garage
 
Thinking Strategically About IoT
Thinking Strategically About IoTThinking Strategically About IoT
Thinking Strategically About IoT
 
Software Developers Guide to Fun in the Workplace: Euphoria Despite the Despair
Software Developers Guide to Fun in the Workplace: Euphoria Despite the DespairSoftware Developers Guide to Fun in the Workplace: Euphoria Despite the Despair
Software Developers Guide to Fun in the Workplace: Euphoria Despite the Despair
 
The Cuddly Throwable Application Server
The Cuddly Throwable Application ServerThe Cuddly Throwable Application Server
The Cuddly Throwable Application Server
 
An Arduino, an application, server, and me
An Arduino, an application, server, and meAn Arduino, an application, server, and me
An Arduino, an application, server, and me
 
Building Stuff for Fun and Profit - confessions from a life in code and cables
Building Stuff for Fun and Profit - confessions from a life in code and cablesBuilding Stuff for Fun and Profit - confessions from a life in code and cables
Building Stuff for Fun and Profit - confessions from a life in code and cables
 
Microservices: from dream to reality in an hour
Microservices: from dream to reality in an hourMicroservices: from dream to reality in an hour
Microservices: from dream to reality in an hour
 

Recently uploaded

Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 

OSGi and the Enterprise - A match made in a ... box?

  • 1. OOOOOOSGiSGiSGiSGiSGiSGi aaaaaannnnnndddddd tttttthhhhhheeeeee EEEEEEntntntntntnteeeeeerrrrrrpppppprrrrrriiiiiisesesesesese AAAAAA mmmmmmaaaaaatctctctctctchhhhhh mmmmmmaaaaaaddddddeeeeee iiiiiin an an an an an a .................. bbbbbbooooooxxxxxx?????? Holly Cummins Paris Java User Group June 8, 2010
  • 2. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 2 AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg In the beginning, there were bits ... 0101011101001001010010010011011101101101101
  • 3. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 3 AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg Then came words ... mov ah,9 mov dx,offset hello_message int 21h
  • 4. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 4 AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg ... functions and libraries ... #include <stdio.h> main() { printf ("Hello World!n"); }
  • 5. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 5 AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg ... objects ... public class HelloWorldSayer { public void sayHello() { System.out.println("Hello, world!n"); } }
  • 6. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 6 AAAAAA ((((((vvvvvveeeeeerrrrrryyyyyy)))))) bbbbbbrrrrrriiiiiieeeeeeffffff hhhhhhiiiiiissssssttttttoooooorrrrrryyyyyy ooooooffffff pppppprrrrrrooooooggggggrrrrrraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg ... and now - Enterprise OSGi <service ref="helloservice" interface="helloworld.HelloWorldService" /> public class HelloWorldClient { HelloWorldService service = null; public void startUp() { service.hello(); } }
  • 7. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 7 WWWWWWhhhhhhaaaaaatttttt wwwwwwaaaaaassssss wwwwwwrrrrrroooooonnnnnngggggg wwwwwwiiiiiitttttthhhhhh wwwwwwhhhhhheeeeeerrrrrreeeeee wwwwwweeeeee wwwwwweeeeeerrrrrreeeeee??????
  • 8. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 8 WWWWWWhhhhhhaaaaaatttttt wwwwwwaaaaaassssss wwwwwwrrrrrroooooonnnnnngggggg wwwwwwiiiiiitttttthhhhhh wwwwwwhhhhhheeeeeerrrrrreeeeee wwwwwweeeeee wwwwwweeeeeerrrrrreeeeee?????? A question of scale
  • 9. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 9 IDL JDBC JNDI JAXP JAAS JMX RMI-IIOP EEEEEEnnnnnnteteteteteterrrrrrpppppprrrrrriiiiiisesesesesese AAAAAAPPPPPPIIIIIIssssss iiiiiinnnnnn JJJJJJaaaaaavavavavavava SSSSSSEEEEEE ((((((RRRRRReeeeeeqqqqqquuuuuuiiiiiirrrrrreeeeeedddddd ffffffoooooorrrrrr JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE)))))) Servlet JSP WWWWWWeeeeeebbbbbb CCCCCCoooooonnnnnntatatatatataiiiiiinnnnnneeeeeerrrrrr JavaMailJAF JAX-RPC JAX-WS WebServices WSMetadata JMS JTA JACC JAXR Management JPA EJB SAAJ HTTP/SSL Direct dependency Optional dependencies JSTL JSF JAXB JCA Debug Common Annotations JJJJJJaaaaaavavavavavava EEEEEEEEEEEE WWWWWWeeeeeebbbbbb tetetetetetechchchchchchnnnnnnoooooollllllooooooggggggiiiiiieeeeeessssss StAX Indirect (soft) dependency JAX-RS JASPIC CDI&DI
  • 10. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 10 IDL JDBC JNDI JAXP JAAS JMX RMI-IIOP EEEEEEnnnnnntttttteeeeeerrrrrrpppppprrrrrriiiiiisssssseeeeee AAAAAAPPPPPPIIIIIIssssss iiiiiinnnnnn JJJJJJaaaaaavavavavavava SSSSSSEEEEEE ((((((RRRRRReeeeeeqqqqqquuuuuuiiiiiirrrrrreeeeeedddddd ffffffoooooorrrrrr JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE)))))) Servlet JSP WWWWWWeeeeeebbbbbb CCCCCCoooooonnnnnnttttttaaaaaaiiiiiinnnnnneeeeeerrrrrr JavaMailJAF JAX-RPC JAX-WS Web Services WS Metadata JMS JTA JACC JAXR Manage ment JPA EJB SAAJ HTTP/SSL Direct dependency Optional dependencies JSTL JSF JAXB JCA Debug Comm on Annot ations JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE WWWWWWeeeeeebbbbbb tttttteeeeeechchchchchchnnnnnnoooooollllllooooooggggggiiiiiieeeeeessssss StAX Indirect (soft) dependencyJAX-RS JASPIC CDI&DI ((((((ccccccaaaaaappppppaaaaaabbbbbbiiiiiilllllliiiiiittttttyyyyyy ============ bbbbbbllllllooooooaaaaaatttttt))))))?????? HTTP Session Replication Connection Management Persistence Providers User Registries Event Mgmt Logging and Tracing MBean Server Admin Console and scripting DataSources Messaging Engines Security Transport Channels Workload Management HTTP Serving and routing High Availability Management Transaction Logging and Recovery Thread management Classloading Provisioning Monitoring Policy and SLA mgmt Configuration ………………
  • 11. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 11 I DL J DB C J ND I J A XP J AAS J MX RMI - I I OP EEEEEEnnnnnntttttteeeeeerrrrrrprprprprprpriiiiiiseseseseseseAAAAAAPPPPPPIIIIIIssssss iiiiiinnnnnnJJJJJJaaaaaavvvvvvaaaaaaSSSSSSEEEEEE ((((((RRRRRReeeeeeququququququiiiiiirerererereredddddd fffffforororororor JJJJJJaaaaaavvvvvvaaaaaaEEEEEEEEEEEE)))))) S e r vl e t J S P WWWWWWeeeeeebbbbbb CCCCCCononononononttttttaaaaaainininininineeeeeerrrrrr JavaMailJAF JAX-RPC JAX-WS WebServices WSMetadata JMS JTA JACC JAXR Management JPA EJB SAAJ HTTP/SSL Di r e c t d e p e n de n c y Opt i o na l d e p e nd e nc i e s JSTL JSF JAXB JCA Debug CommonAnnotations JJJJJJaaaaaavvvvvvaaaaaaEEEEEEEEEEEE WWWWWWeeeeeebbbbbb tttttteeeeeecccccchhhhhhnnnnnnoooooollllllogogogogogogiiiiiieeeeeessssss StAX I nd i r e c t ( s o f t ) d e p e n d e nc y JAX-RS JASPIC CDI&DI BBBBBBeeeeeeyyyyyyoooooonnnnnndddddd JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE……………… HTTP Session Replication Connection Management Persistence Providers User Registries Event Mgmt Logging and Tracing MBean Server Admin Console and scripting DataSources Messaging Engines Security Transport Channels Workload Management HTTP Serving and routing High Availability Management Transaction Logging and Recovery Thread management Classloading Provisioning Monitoring Policy and SLA mgmt Configuration ……………… Batch Telephony BPM Dynamic Scripting SCA Business Rules Complex Event Processing ………………
  • 12. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 12 MMMMMMoooooodddddduuuuuulalalalalalarrrrrriiiiiittttttyyyyyy iiiiiinnnnnnssssssiiiiiiddddddeeeeee EEEEEEnnnnnntttttteeeeeerrrrrrpppppprrrrrriiiiiisssssseeeeee ppppppllllllaaaaaattttttffffffoooooorrrrrrmmmmmmssssss The major AppServer and Integration vendors and Open Source communities have all embraced OSGi for their own internal architecture • IBM WebSphere, Oracle WebLogic, Red Hat JBoss, Sun GlassFish, SpringSource dm Server, Paremus Service Fabric, Eclipse Platform, Apache Geronimo, (non-exhaustive list)  http://www.osgi.org/wiki/uploads/News/2008_09_16_worldwide_market.pdf These complex engineering projects required a modular approach to development as they evolved and grew • Breaking the problem into well-defined coherent modules enables development teams to focus on their area of concern. • OSGi not only enables but enforces modularity
  • 13. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 13 Java Platform Modularity • Classes encapsulate data • Packages contain classes • Jars contain packages Class visibility: • private, package private, protected, public No “jar scoped” access modifiers. No means for a jar to declare its dependencies. No versioning. Jars have no modularization characteristics • At runtime there is just a collection of classes on a global classpath Jar PackagePackage ClassClass PackagePackage ClassClass ClassClass PackagePackage ClassClass ClassClass PPPPPPrrrrrroooooobbbbbblllllleeeeeemmmmmmssssss wwwwwwiiiiiitttttthhhhhh JJJJJJAAAAAARRRRRRssssss
  • 14. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 14 JJJJJJaaaaaavvvvvvaaaaaa VVVVVVMMMMMM lllllloooooogggggg444444jjjjjj bbbbbbaaaaaarrrrrrccccccooooooddddddeeeeee444444jjjjjj aaaaaaxxxxxxiiiiiissssss bbbbbbaaaaaattttttiiiiiikkkkkk ccccccoooooommmmmmmmmmmmoooooonnnnnnssssss ddddddeeeeeerrrrrrbbbbbbyyyyyy ffffffoooooopppppp eeeeeezzzzzzmmmmmmoooooorrrrrrpppppphhhhhh ffffffrrrrrreeeeeeeeeeeemmmmmmaaaaaarrrrrrkkkkkkeeeeeerrrrrr hhhhhhttttttttttttppppppuuuuuunnnnnniiiiiitttttt jjjjjjaaaaaakkkkkkaaaaaarrrrrrttttttaaaaaa jjjjjjccccccllllll jjjjjjssssssoooooonnnnnn jjjjjjddddddbbbbbbmmmmmm jjjjjjddddddoooooommmmmm jjjjjjeeeeeennnnnnkkkkkkssssss jjjjjjppppppoooooossssss111111888888 jjjjjjyyyyyytttttthhhhhhoooooonnnnnn llllllooooooooooookkkkkkssssss lllllluuuuuucccccceeeeeennnnnneeeeee mmmmmmaaaaaaiiiiiillllll mmmmmmxxxxxx444444jjjjjj nnnnnnaaaaaammmmmmiiiiiinnnnnngggggg jjjjjjeeeeeettttttttttttyyyyyy ppppppooooooiiiiii rrrrrreeeeeessssssoooooollllllvvvvvveeeeeerrrrrr rrrrrroooooommmmmmeeeeee sssssseeeeeerrrrrriiiiiiaaaaaalllllliiiiiizzzzzzeeeeeerrrrrr sssssseeeeeerrrrrrvvvvvvlllllleeeeeettttttssssss ttttttoooooommmmmmccccccaaaaaatttttt vvvvvveeeeeelllllloooooocccccciiiiiittttttyyyyyy wwwwwwssssss------ccccccoooooommmmmmmmmmmmoooooonnnnnnssssss xxxxxxaaaaaallllllaaaaaannnnnn wwwwwwssssssddddddllllll444444jjjjjj xxxxxxeeeeeerrrrrrcccccceeeeeessssss xxxxxxmmmmmmllllllggggggrrrrrraaaaaapppppphhhhhhiiiiiiccccccssssss xxxxxxmmmmmmllllllrrrrrrppppppcccccc xxxxxxmmmmmmllllllaaaaaappppppiiiiiissssss ............ ggggggeeeeeerrrrrroooooonnnnnniiiiiimmmmmmoooooo bbbbbbsssssshhhhhh bbbbbbssssssffffff gggggguuuuuuiiiiiiaaaaaapppppppppppp hhhhhhhhhhhhffffffaaaaaacccccciiiiiilllllliiiiiittttttyyyyyy mmmmmmaaaaaannnnnnuuuuuuffffffaaaaaacccccctttttt...... mmmmmmaaaaaarrrrrrkkkkkkeeeeeettttttiiiiiinnnnnngggggg mmmmmmiiiiiinnnnnneeeeeerrrrrrvvvvvvaaaaaa aaaaaaccccccccccccoooooouuuuuunnnnnnttttttiiiiiinnnnnngggggg aaaaaasssssssssssseeeeeettttttmmmmmmaaaaaaiiiiiinnnnnntttttt bbbbbbaaaaaasssssseeeeee bbbbbbiiiiii ccccccaaaaaattttttaaaaaalllllliiiiiinnnnnnaaaaaa ccccccoooooommmmmmmmmmmmoooooonnnnnn ooooooaaaaaaggggggiiiiiissssss oooooorrrrrrddddddeeeeeerrrrrr eeeeeebbbbbbaaaaaayyyyyy ccccccoooooonnnnnntttttteeeeeennnnnntttttt ddddddaaaaaattttttaaaaaaffffffiiiiiilllllleeeeee eeeeeeccccccoooooommmmmmmmmmmmeeeeeerrrrrrcccccceeeeee eeeeeennnnnnttttttiiiiiittttttyyyyyy ggggggoooooooooooogggggglllllleeeeeebbbbbbaaaaaasssssseeeeee ooooooffffffbbbbbbiiiiiizzzzzz wwwwwwiiiiiiddddddggggggeeeeeetttttt mmmmmmiiiiiinnnnnniiiiiillllllaaaaaannnnnngggggg ppppppaaaaaarrrrrrttttttyyyyyy ppppppoooooossssss...... pppppprrrrrroooooodddddduuuuuucccccctttttt wwwwwwoooooorrrrrrkkkkkkeeeeeeffffffffffffoooooorrrrrrtttttt wwwwwwoooooorrrrrrkkkkkkfffffflllllloooooowwwwww ……………… ssssssuuuuuunnnnnnjjjjjjcccccceeeeee______pppppprrrrrroooooovvvvvv...... pppppplllllluuuuuuggggggiiiiiinnnnnn jjjjjjsssssssssssseeeeee jjjjjjcccccceeeeee rrrrrrtttttt ddddddnnnnnnssssssnnnnnnssssss ............ ……………… CCCCCCllllllaaaaaassssssssssss NNNNNNooooootttttt FFFFFFoooooouuuuuunnnnnndddddd EEEEEExxxxxxcccccceeeeeeppppppttttttiiiiiioooooonnnnnn BBBBBBeeeeeeggggggiiiiiinnnnnnBBBBBBeeeeeeggggggiiiiiinnnnnn HHHHHHeeeeeerrrrrreeeeeeHHHHHHeeeeeerrrrrreeeeee TTTTTThhhhhheeeeee GGGGGGlllllloooooobbbbbbaaaaaallllll CCCCCCllllllaaaaaassssssssssssppppppaaaaaatttttthhhhhh
  • 15. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 15 PPPPPPrrrrrroooooobbbbbblllllleeeeeemmmmmmssssss wwwwwwiiiiiitttttthhhhhh EEEEEEAAAAAARRRRRRssssss/W/W/W/W/W/WAAAAAARRRRRRssssss Enterprise Apps have isolated classpaths but… Across apps - each archive typically contains all the libraries required by the application • Common libraries/frameworks get installed with each application • Multiple copies of libraries in memory Within apps - 3rd party libraries consume other 3rd party libraries leading to version conflicts wwwwwweeeeeebbbbbbAAAAAA......wwwwwwaaaaaarrrrrr WEB-INF/classes/servletA.class WEB-INF/lib/spring.jar WEB-INF/lib/commons-logging.jar WEB-INF/lib/junit.jar… wwwwwweeeeeebbbbbbBBBBBB......wwwwwwaaaaaarrrrrr WEB-INF/classes/servletB.class WEB-INF/lib/spring.jar WEB-INF/lib/commons-logging.jar WEB-INF/lib/junit.jar… wwwwwweeeeeebbbbbbCCCCCC......wwwwwwaaaaaarrrrrr WEB-INF/classes/servletC.class WEB-INF/lib/spring.jar WEB-INF/lib/commons-logging.jar WEB-INF/lib/junit.jar… plankton.v1 plankton.v2
  • 16. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 16 OOOOOOSSSSSSGGGGGGiiiiii –––––– TTTTTThhhhhheeeeee DDDDDDyyyyyynnnnnnaaaaaammmmmmiiiiiicccccc MMMMMMoooooodddddduuuuuulllllleeeeee SSSSSSyyyyyysssssstttttteeeeeemmmmmm ffffffoooooorrrrrr JJJJJJaaaaaavvvvvvaaaaaa The OSGi Service Platform specifies a modular architecture for dynamic component based systems • Execution Environment • Module Layer • Life Cycle Layer • Service Layer Runs on a variety of standard Java profiles. Introduces Bundles as modules
  • 17. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 17 OOOOOOSSSSSSGGGGGGiiiiii CCCCCClalalalalalassssssssssss LLLLLLooooooaaaaaaddddddiiiiiinnnnnngggggg Class sharing and visibility is based on declarative dependencies • Not constrained by hierarchical class loader trees built up at runtime. • OSGi f/w takes care of working out the dependencies. Multiple versions of bundles supported concurrently. No global, flat classpath to search. Each bundle has its own classloader / classpath. More efficient for large systems.
  • 18. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 18 BBBBBBuuuuuunnnnnnddddddlllllleeeeee MMMMMMeeeeeettttttaaaaaaddddddaaaaaattttttaaaaaa The higher-level module is the “bundle” which is a normal jar containing: •Classes •Resources •Manifest Manifest­Version: 1.0 Bundle­ManifestVersion: 2 Bundle­Name: MyService bundle Bundle­SymbolicName: com.sample.myservice BBBBBBuuuuuunnnnnnddddddlllllleeeeee­­­­­­VVVVVVeeeeeerrrrrrssssssiiiiiioooooonnnnnn: 1.0.0 Bundle­Activator: ccccccoooooommmmmm......ssssssaaaaaammmmmmpppppplllllleeeeee......mmmmmmyyyyyysssssseeeeeerrrrrrvvvvvviiiiiicccccceeeeee......AAAAAAccccccttttttiiiiiivvvvvvaaaaaattttttoooooorrrrrr IIIIIImmmmmmppppppoooooorrrrrrtttttt­­­­­­PPPPPPaaaaaacccccckkkkkkaaaaaaggggggeeeeee::::::   org.apache.commons.logging;version="1.0.4" EEEEEExxxxxxppppppoooooorrrrrrtttttt­­­­­­PPPPPPaaaaaacccccckkkkkkaaaaaaggggggeeeeee::::::   com.sample.myservice.api;version="1.0.0" META-INF/MANIFEST.MF MMMMMMuuuuuullllllttttttiiiiiipppppplllllleeeeee vvvvvverererererersisisisisisioooooonnnnnnssssss of bundles can be active concurrently. Depepepepepepeeeeeennnnnnddddddenenenenenencccccciiiiiieseseseseses on other bundles are explicitly declared PPPPPPaaaaaacccccckkkkkkaaaaaaggggggeeeeee vivivivivivisisisisisisibbbbbbiiiiiilllllliiiiiittttttyyyyyy outside the bundle is declared. • Other packages are encapsulated by the bundle. Bundles can act on lifecycle changes Eclipse tooling provides convenient editors for the manifest
  • 19. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 19 BBBBBBuuuuuunnnnnnddddddlllllleeeeee LLLLLLiiiiiiffffffeeeeeeccccccyyyyyycccccclllllleeeeee Optional BundleActivator class has opportunityOptional BundleActivator class has opportunity to initialize and cleanup a bundleto initialize and cleanup a bundle • Header in Manifest refers to this classHeader in Manifest refers to this class BundleActivator has 2 methodsBundleActivator has 2 methods • Start: Initialize bundleStart: Initialize bundle • Stop: CleanupStop: Cleanup INSTALLEDINSTALLED RESOLVEDRESOLVED UNINSTALLEDUNINSTALLED ACTIVEACTIVE STOPPINGSTOPPING STARTINGSTARTING startstart stopstop Resolution of dependencies at deployment time. If resolution fails, bundle isResolution of dependencies at deployment time. If resolution fails, bundle is not available for use.not available for use. • No ClassNotFoundExceptions at runtimeNo ClassNotFoundExceptions at runtime Bundle lifecycle is dynamic and independent of the rest of the f/w.Bundle lifecycle is dynamic and independent of the rest of the f/w. • BundleListener can be registered for bundle state change events.BundleListener can be registered for bundle state change events.
  • 20. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 20 OOOOOOSSSSSSGGGGGGiiiiii SSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeessssss OSGi intrinsically supports SOA through its service layer. The core platform includes a non-durable “Service Registry” component. Services are published to and discovered from this Service Registry. • Services are the primary means of collaboration between bundles. An OSGi service is a POJO published to the SR under one or more Java interface names with optional key/value pair metadata • Service discovery can be filtered on the key/value metadata Services are fully dynamic and typically have the same lifecycle as the bundle that provides them. S
  • 21. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 21 WWWWWWhhhhhhaaaaaatttttt aaaaaabbbbbboooooouuuuuutttttt tttttthhhhhheeeeee AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnnssssss?????? The enterprise landscape until recently has been OSGi on the inside only. Why? Primarily because: • Java EE defines an enterprise application programming model and container contracts to honour it • OSGi has typically defined platform specifications and services for those platforms.  It hasn’t had much to say on application concerns such as ■ What's the component model? ■ What's the persistence architecture? ■ How are qualities of service configured? ■ Remoting This has changed in OSGi v4.2.
  • 22. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 22 OOOOOOSSSSSSGGGGGGiiiiii EEEEEEnnnnnntttttteeeeeerrrrrrpppppprrrrrriiiiiisssssseeeeee SSSSSSppppppeeeeeecccccciiiiiiffffffiiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn Release date – 22 March 2010 • The product of the OSGi Enterprise Expert Group (EEG) Brings Enterprise technologies and OSGi together Using existing Java SE/EE specifications: • JTA, JPA, JNDI, JMX, WebApps… Adds Spring-derived component model and dependency injection container JJJJJJaaaaaavvvvvvaaaaaa EEEEEEEEEEEE pppppprrrrrroooooovvvvvviiiiiiddddddeeeeeessssss tttttthhhhhheeeeee ccccccoooooorrrrrreeeeee eeeeeennnnnntttttteeeeeerrrrrrpppppprrrrrriiiiiisssssseeeeee aaaaaapppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn pppppprrrrrroooooogrgrgrgrgrgraaaaaammmmmmmmmmmmiiiiiinnnnnngggggg mmmmmmooooooddddddeeeeeellllll
  • 23. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 23 WWWWWWhhhhhhaaaaaatttttt''''''ssssss tttttthhhhhheeeeee bbbbbbeeeeeennnnnneeeeeeffffffiiiiiitttttt?????? Deploying modules as OSGi bundles • simplifies reuse between applications • encourages (and enforces) modular design • provides versioning • enables dynamic module updates.
  • 24. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 24 NNNNNNeeeeeewwwwww OOOOOOppppppeeeeeennnnnn SSSSSSoooooouuuuuurrrrrrcccccceeeeee AAAAAAccccccttttttiiiiiivvvvvviiiiiittttttiiiiiieeeeeessssss Apache “Aries” created as a new Apache incubator project in Sep 2009: • to provide enterprise OSGi spec implementations • to provide an environment for collaboration and innovation about the standards • to build a broad development community Eclipse Enterprise Modules (“Gemini”) - currently being provisioned. • Sub-projects will provide EEG spec implementations http://www.eclipse.org/proposals/gemini/
  • 25. Holly Cummins 25 HHHHHHiiiiiissssssttttttoooooorrrrrryyyyyy “Aries” created as a new Apache incubator project in Sep 2009 Available to use now – 0.1 version released last month – Integrated into WebSphere V7 Feature Pack for OSGi Applications – released last week Independent of • OSGi framework provider • Integration/server runtime 43 committers from a broad range of companies
  • 26. Holly Cummins 26 AAAAAArrrrrriiiiiieeeeeessssss CCCCCCoooooonnnnnntttttteeeeeennnnnntttttt iiiiiinnnnnncccccclllllluuuuuuddddddeeeeeessssss……………… Blueprint container JPA integration JTA integration JMX JNDI integration Application assembly and deployment META-INF/services handler Samples, documentation, integrator’s guide
  • 27. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 27 AAAAAArrrrrriiiiiieeeeeessssss BBBBBBlulululululueeeeeepppppprrrrrriiiiiinnnnnntttttt CCCCCCoooooonnnnnnttttttaaaaaaiiiiiinnnnnneeeeeerrrrrr A dependency Injection container • Standardizes established Spring conventions • Part of the server runtime (compared to Spring which is part of the app.) Configuration and dependencies declared in XML “module blueprint”, which is a standardization of Spring “application context” XML. • Extended for OSGi: publishes and consumes components as OSGi services Simplifies using OSGi services • No ServiceTrackers • No lookups Managed beans publishes service consumes service Blueprint bundle OSGI-INF/blueprint/ blueprint.xml A static assembly and configuration of components (POJOs)
  • 28. Holly Cummins EEEEEExxxxxxppppppllllllooooooiiiiiittttttiiiiiinnnnnngggggg BBBBBBlulululululueeeeeepppppprrrrrriiiiiinnnnnntttttt CCCCCCoooooommmmmmppppppoooooonnnnnneeeeeennnnnnttttttssssss aaaaaannnnnndddddd SSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeessssss publicpublicpublicpublicpublicpublic classclassclassclassclassclass ShopImpl { privateprivateprivateprivateprivateprivate BillingService billingService; voidvoidvoidvoidvoidvoid setBillingService(BillingService srv) { billingService = srv; } voidvoidvoidvoidvoidvoid process(Order o) { billingService.bill(o); } } e-Commerce <blueprint> <bean id=”shop” class=”org.example.ecomm.ShopImpl”> <property name=”billingService” ref=”billingService” /> </bean> <reference id=”billingService” interface=”org.example.bill.BillingService” /> </blueprint> eeeeee-C-C-C-C-C-Coooooommemmemmemmemmemmerrrrrrcececececece bbbbbbuuuuuunnnnnnddddddlllllleeeeee -injected service reference -service can change over time -can be temporarily absent without the bundle caring -managed by Blueprint container
  • 29. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 29 JJJJJJaaaaaavvvvvvaaaaaa PPPPPPeeeeeerrrrrrssssssiiiiiisssssstttttteeeeeennnnnncccccceeeeee aaaaaannnnnndddddd PePePePePePerrrrrrssssssiiiiiisssssstttttteeeeeennnnnncccccceeeeee BBBBBBuuuuuunnnnnnddddddlelelelelelessssss Each persistence bundle has its standard JPA metadata located through the Meta-Persistence bundle header. JPA Container locates a JPA Provider • Registers a Provider-created EntityManagerFactory service for each PU • Optionally injects an EntityManager org.apache.aries.jpa.container Persistence bundle BBBBBBuuuuuunnnnnnddddddlllllleeeeee MMMMMMaaaaaannnnnniiiiiiffffffeeeeeesssssstttttt ……………… Meta-Persistence: OSGI-INF/persistence.xml OSGI-INF/ persistence.xml Used to build the EntityManagerFactory Managed EntityManagerFactory Registered on behalf of the persistence bundle JPA Provider javax.persistence.spi. PersistenceProvider service createContainerEMF (PersistenceUnitInfo) Uses Registers EntityManagerFactory service per PU Entities Uses
  • 30. Holly Cummins 30 AAAAAArrrrrriiiiiieeeeeessssss JJJJJJPAPAPAPAPAPA CCCCCCoooooonnnnnnttttttaaaaaaiiiiiinnnnnneeeeeerrrrrr –––––– BBBBBBlllllluuuuuueeeeeepppppprrrrrriiiiiinnnnnntttttt IIIIIInnnnnntttttteeeeeeggggggrrrrrraaaaaattttttiiiiiioooooonnnnnn <bbbbbblllllluuuuuuepepepepepeprrrrrriiiiiinnnnnntttttt xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:jta="http://aries.apache.org/xmlns/transactions/v1.0.0" xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0"> <bbbbbbeaeaeaeaeaeannnnnn id=“appMgd“ class=“com.acme.AppManaged”> <jjjjjjpapapapapapa::::::uuuuuunnnnnniiiiiitttttt property="emf" unitname="myUnit" /> </bea/bea/bea/bea/bea/beannnnnn> <bbbbbbeaeaeaeaeaeannnnnn id="containerMgd“ class=“com.acme.Container”> <jjjjjjpapapapapapa::::::ccccccoooooonnnnnntttttteeeeeexxxxxxtttttt property="em" unitname=“myUnit“/> <jjjjjjttttttaaaaaa::::::ttttttrrrrrraaaaaannnnnnsasasasasasaccccccttttttiiiiiioooooonnnnnn method=“*" value=“Required" /> </bea/bea/bea/bea/bea/beannnnnn> </b/b/b/b/b/blllllluuuuuuepepepepepeprrrrrriiiiiinnnnnntttttt> Example blueprint with JPA resource injection and container-managed transactions
  • 31. Holly Cummins 31 AAAAAArrrrrriiiiiieeeeeessssss JJJJJJTTTTTTAAAAAA iiiiiinnnnnntttttteeeeeeggggggrrrrrraaaaaattttttiiiiiioooooonnnnnn
  • 32. Holly Cummins 32 AAAAAArrrrrriiiiiieeeeeessssss JJJJJJNDNDNDNDNDNDIIIIII iiiiiinnnnnntttttteeeeeeggggggrrrrrraaaaaattttttiiiiiioooooonnnnnn Provides JNDI-based access to OSGi Service Registry <<<<<<bbbbbblllllluuuuuueeeeeepppppprrrrrriiiiiinnnnnntttttt xxxxxxmmmmmmllllllnnnnnnssssss======..................>>>>>> <<<<<<bbbbbbeeeeeeaaaaaannnnnn iiiiiidddddd======""""""bbbbbbllllllooooooggggggggggggiiiiiinnnnnnggggggSSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeeCCCCCCoooooommmmmmppppppoooooonnnnnneeeeeennnnnntttttt"""""" ccccccllllllaaaaaassssssssssss======""""""oooooorrrrrrgggggg......aaaaaappppppaaaaaacccccchhhhhheeeeee......aaaaaarrrrrriiiiiieeeeeessssss......BBBBBBllllllooooooggggggggggggiiiiiinnnnnnggggggSSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeeIIIIIImmmmmmppppppllllll"""""">>>>>> <<<<<<//////bbbbbbeeeeeeaaaaaannnnnn>>>>>> <<<<<<sssssseeeeeerrrrrrvvvvvviiiiiicccccceeeeee rrrrrreeeeeeffffff======""""""bbbbbbllllllooooooggggggggggggiiiiiinnnnnnggggggSSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeeeCCCCCCoooooommmmmmppppppoooooonnnnnneeeeeennnnnntttttt"""""" iiiiiinnnnnntttttteeeeeerrrrrrffffffaaaaaacccccceeeeee======""""""oooooorrrrrrgggggg......aaaaaappppppaaaaaacccccchhhhhheeeeee......aaaaaarrrrrriiiiiieeeeeessssss......ssssssaaaaaammmmmmpppppplllllleeeeeessssss......bbbbbblllllloooooogggggg......aaaaaappppppiiiiii......BBBBBBllllllooooooggggggggggggiiiiiinnnnnnggggggSSSSSSeeeeeerrrrrrvvvvvviiiiiicccccceeeeee""""""//////>>>>>> .................. <<<<<<//////bbbbbblllllluuuuuueeeeeepppppprrrrrriiiiiinnnnnntttttt>>>>>> registerService InitialContext ic = nnnnnneeeeeewwwwww InitialContext(); BloggingService blog= ic.lookup("osgi:services/" + BloggingService.ccccccllllllaaaaaassssssssssss.getName()); getService A way for a Web component to access a Blueprint componentOSGi Service Registry JNDI Context
  • 33. Holly Cummins 33 AAAAAArrrrrriiiiiieeeeeessssss JJJJJJMMMMMMXXXXXX IIIIIInnnnnntttttteeeeeeggggggrrrrrraaaaaattttttiiiiiioooooonnnnnn Implementation of OSGi JMX specification. Aries JMX bundle automatically registers the JMX MBeans into any javax.management.MBeanServer service in the OSGi Service Registry. JMX OSGi Manager <<MBean>> Fram ework MBean <<MBean>> Bund le State MBean <<MBean>> Service St ate MBean <<MBean>> Package St ate MBean <<MBean>> Co nfiguratio n  Ad min  MBean <<MBean>> Permis sion   Ad min  MBean <<MBean>> Provisionin g  ServiceMBean <<MBean>> User Adm in  MBean PermissionAdmin ConfigurationAdmin ProvisioningService User Admin MBeanServer <<MBean>> Blue print MBean Framework MBeans Compendium MBeans Additional Aries MBeans
  • 34. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 34 WWWWWWeeeeeebbbbbb AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn BBBBBBuuuuuunnnnnnddddddlelelelelelessssss Bundles are recognized as Web applications if they contain a standard OSGi manifest header to identify the context path  Web-ContextPath: A hosting platform • Listens for bundles starting & stopping with WAB content • Hands the web components of to the Web Container to manage.
  • 35. Holly Cummins 35 AAAAAArrrrrriiiiiieeeeeessssss AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn AAAAAAsssssssssssseeeeeemmmmmmbbbbbblylylylylyly aaaaaannnnnndddddd DDDDDDeeeeeepppppplolololololoyyyyyy Pluggable infrastructure for deployment of an application – A collection of bundles forming a logical unit – Packaged as an enterprise bundle archive (archive with .eba extn). •An “Enterprise OSGi Application”. Constituent bundles may be contained (“by-value”) in the .eba archive or referenced in APPLICATION.MF Only explicitly declared Services are exposed from the application. Config by exception - absence of APPLICATION.MF means: •application content is the set of bundles contained by-value plus any repository-hosted dependencies identified during deployment. AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn MMMMMMaaaaaannnnnniiiiiiffffffeeeeeesssssstttttt Enumerates constituent bundles Declares Application “externals” blog.eba blog-persistence.jar blog.jar blog-servlet.jar BBBBBBuuuuuunnnnnnddddddlllllleeeeee RRRRRRepepepepepepososososososiiiiiittttttororororororyyyyyy json4j.jar
  • 36. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 36 wwwwwweeeeeebbbbbbAAAAAA......wwwwwwaaaaaarrrrrr WEB-INF/classes/servletA.class WEB-INF/lib/spring.jar WEB-INF/lib/commons-logging.jar WEB-INF/lib/junit.jar… wwwwwweeeeeebbbbbbBBBBBB......wwwwwwaaaaaarrrrrr WEB-INF/classes/servletB.class WEB-INF/lib/spring.jar WEB-INF/lib/commons-logging.jar WEB-INF/lib/junit.jar… wwwwwweeeeeebbbbbbCCCCCC......wwwwwwaaaaaarrrrrr WEB-INF/classes/servletC.class WEB-INF/lib/spring.jar WEB-INF/lib/commons-logging.jar WEB-INF/lib/junit.jar… MMMMMMoooooodddddduuuuuulelelelelele RRRRRReeeeee------UUUUUUsssssseeeeee MMMMMMaaaaaaddddddeeeeee EEEEEEaaaaaassssssyyyyyy NNNNNNoooooo JJJJJJaaaaaavavavavavava ccccccooooooddddddeeeeee cccccchhhhhhaaaaaannnnnngggggges;es;es;es;es;es; wwwwwwaaaaaarrrrrr mmmmmmoooooodddddduuuuuulllllleseseseseses ------>>>>>> bbbbbbuuuuuunnnnnnddddddlllllleseseseseses CCCCCCoooooommmmmmmmmmmmoooooonnnnnn,,,,,, bbbbbbuuuuuunnnnnnddddddlllllleseseseseses mmmmmmaaaaaayyyyyy bbbbbbeeeeee eaeaeaeaeaeasisisisisisillllllyyyyyy ffffffaaaaaaccccccttttttoooooorrrrrredededededed oooooouuuuuutttttt ooooooffffff tttttthhhhhheeeeee WAWAWAWAWAWARRRRRRssssss aaaaaannnnnndddddd uuuuuusedsedsedsedsedsed aaaaaatttttt spspspspspspeeeeeeciciciciciciffffffiiiiiicccccc ververververververssssssiiiiiioooooonnnnnnssssss wwwwwweeeeeebbbbbbAAAAAA......wwwwwwaaaaaabbbbbb WEB-INF/classes/servletA.class MEMEMEMEMEMETTTTTTAAAAAA------ININININININFFFFFF//////MAMAMAMAMAMANNNNNNIIIIIIFFFFFFEEEEEESSSSSSTTTTTT......MMMMMMFFFFFF BBBBBBuuuuuunnnnnnddddddlllllleeeeee RRRRRRepepepepepepososososososiiiiiittttttororororororyyyyyy WEB-INF/lib/spring.jar;version=“a.b.c” WEB-INF/lib/commons-logging.jar;version=… WEB-INF/lib/json4j.jar;version=… WEB-INF/lib/junit.jar… wwwwwweeeeeebbbbbbBBBBBB......wwwwwwaaaaaabbbbbb WEB-INF/classes/servletB.class MMMMMMEEEEEETTTTTTAAAAAA------ININININININFFFFFF//////MAMAMAMAMAMANNNNNNIFIFIFIFIFIFEEEEEESSSSSSTTTTTT......MMMMMMFFFFFF wwwwwweeeeeebbbbbbC.C.C.C.C.C.wwwwwwaaaaaabbbbbb WEB-INF/classes/servletC.class MEMEMEMEMEMETTTTTTAAAAAA------ININININININFFFFFF//////MAMAMAMAMAMANNNNNNIIIIIIFFFFFFEEEEEESSSSSSTTTTTT......MMMMMMFFFFFF Import-Package
  • 37. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 37 BBBBBBuuuuuunnnnnnddddddlllllleeeeee------lllllleeeeeevvvvvveeeeeellllll MMMMMMaaaaaannnnnnaaaaaaggggggeeeeeemmmmmmeeeeeennnnnntttttt WebSphere Administrative Console
  • 38. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 38 DDDDDDeeeeeemmmmmmoooooo
  • 39. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 39 OOOOOOnnnnnn lllllluuuuuucccccckkkkkk .................. “I'm a great believer in luck and I find the harder I work, the more I have of it.” ■ Thomas Jefferson
  • 40. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 40 DDDDDDeeeeeemmmmmmoooooo ((((((mmmmmmaaaaaayyyyyybbbbbbeeeeee))))))
  • 41. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 41 DDDDDDeeeeeemmmmmmoooooo ((((((mmmmmmaaaaaayyyyyybbbbbbeeeeee))))))
  • 42. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 42
  • 43. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 43 RRRRRRADADADADADAD NNNNNNeeeeeexxxxxxtttttt BBBBBBeeeeeettttttaaaaaa TTTTTToooooooooooolllllliiiiiinnnnnngggggg OSOSOSOSOSOSGGGGGGiiiiii AAAAAAppppppplplplplplpliiiiiicacacacacacattttttiiiiiioooooonnnnnn PPPPPPlllllluuuuuuggggggiiiiiinnnnnn WWWWWWAAAAAASSSSSS vvvvvv777777 OOOOOOSSSSSSGGGGGGiiiiii FFFFFFeeeeeePPPPPP TTTTTTeeeeeesssssstttttt EEEEEEnnnnnnvvvvvviiiiiirrrrrroooooonnnnnnmmmmmmeeeeeennnnnntttttt EEEEEEcccccclllllliiiiiippppppsssssseeeeee WWWWWWTPTPTPTPTPTP PPPPPPDDDDDDEEEEEE GGGGGGrrrrrraaaaaapppppphhhhhhiiiiiiccccccaaaaaallllll AAAAAApppppppppppplllllliiiiiicacacacacacattttttiiiiiioooooonnnnnn EEEEEEddddddiiiiiittttttoooooorrrrrr DDDDDDeeeeeevevevevevevellllllooooooppppppeeeeeerrrrrr PPPPPPrrrrrroooooodddddduuuuuuctctctctctctiiiiiivivivivivivittttttyyyyyy (e.g. content assist, validation, re-factoring) GGGGGGrrrrrraaaaaapppppphhhhhhiiiiiiccccccaaaaaallllll CCCCCCrrrrrreeeeeeaaaaaattttttiiiiiioooooonnnnnn WWWWWWiiiiiizzzzzzaaaaaarrrrrrddddddssssss CCCCCCrrrrrreeeeeeaaaaaattttttiiiiiioooooonnnnnn ////// IIIIIImmmmmmppppppoooooorrrrrrtttttt ////// EEEEEExpxpxpxpxpxpoooooorrrrrrtttttt ToToToToToTooooooollllllssssss TTTTTTuuuuuuttttttoooooorrrrrriiiiiiaaaaaallllllssssss aaaaaannnnnndddddd DDDDDDooooooccccccuuuuuummmmmmeeeeeennnnnnttttttaaaaaattttttiiiiiioooooonnnnnn PPPPPPuuuuuubbbbbblllllliiiiiishshshshshsh aaaaaannnnnndddddd RRRRRRuuuuuunnnnnn WWWWWWAAAAAASSSSSS vvvvvv777777 SSSSSSeeeeeerrrrrrvvvvvveeeeeerrrrrr SSSSSSuuuuuuppppppppppppoooooorrrrrrtttttt EEEEEEnnnnnnhhhhhhaaaaaannnnnncecececececedddddd VVVVVVaaaaaalllllliiiiiiddddddaaaaaattttttiiiiiioooooonnnnnn FFFFFFrererererereeeeeee EEEEEEcccccclllllliiiiiippppppsssssseeeeee PPPPPPlllllluuuuuuggggggiiiiiinnnnnn ffffffoooooorrrrrr OOOOOOSSSSSSGGGGGGiiiiii AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnnssssss Graphical tools to develop OSGi applications and bundles Includes features that increase developer productivity Creates OSGi Applications for any Aries-based server runtime. Eclipse WTP 3.6 (Helios) M6 or later required OOOOOOSSSSSSGGGGGGiiiiii AAAAAApppppppppppplllllliiiiiiccccccaaaaaattttttiiiiiioooooonnnnnn SSSSSSuuuuuuppppppppppppoooooorrrrrrtttttt iiiiiinnnnnn RRRRRRADADADADADAD BBBBBBeeeeeettttttaaaaaa  Provide integrated development and test of OSGi Applications on the WebSphere platform  Integrated with Web Tools, JEE productivity tools, and other capabilities in RAD Supports deployment to WAS v7 OSGi FeP and includes the FeP in the WAS Test Environment Enhanced validation FFFFFFrrrrrreeeeeeeeeeee ttttttoooooooooooolslslslslsls https://www14.software.ibm.com/iwm/web/cc/ earlyprograms/rational/radob/index.shtml http://www.ibm.com/developerworks/rational/downloads /10/rationaldevtoolsforosgiapplications.html
  • 44. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 44 RRRRRReeeeeessssssoooooouuuuuurrrrrrcccccceeeeeessssss Apache Aries • http://incubator.apache.org/aries/ Free tools • http://www.ibm.com/developerworks/rational/downloads /10/rationaldevtoolsforosgiapplications.html IBM WebSphere Feature Pack for OSGi Applications and Java Persistence API 2.0 • http://www-01.ibm.com/software/webservers/appserv/was/ featurepacks/osgi/
  • 45. 45 In the near future… all major Java enterprise runtimes will support Apps deployed as bundles
  • 46. Holly Cummins QQQQQQCCCCCCoooooonnnnnn LoLoLoLoLoLonnnnnnddddddoooooonnnnnn 222222000000111111000000 IIIIIIaaaaaannnnnn RRRRRRoooooobbbbbbiiiiiinnnnnnssssssoooooonnnnnn 46 AAAAAAnnnnnnyyyyyy qqqqqquuuuuueeeeeessssssttttttiiiiiioooooonnnnnnssssss??????
  • 47. Holly Cummins 47 FFFFFFuuuuuuttttttuuuuuurrrrrreeeeeessssss There are many new application-centric features that Aries may develop including: •message-driven blueprint components and services •declarative role-based security for blueprint components •annotation-based alternative to XML configuration •resource-reference metadata and bindings (Original Proposal: http://wiki.apache.org/incubator/AriesProposal) Interested in getting involved? •http://incubator.apache.org/aries/gettinginvolved.html