8. OSGi - a very brief introduction
• Modular
• OSGi Bundles:
• High Cohesion (One classloader/bundle)
• Low Coupling (Package Import/Export)
• Versioning per bundle ( [1.0,2,0) )
• Service Registry
2014-‐10-‐23
8
9. What is Karaf
• Container
• OSGi Applications
• Ligthtweight
• expandable to Full Enterprise support
• Covers all major needs
• Logging
• Deployment
• Configuration
2014-‐10-‐23
9
35. HTTP Service
2014-‐10-‐23
33
• Using an Activator:
final HttpContext httpContext = httpService
.createDefaultHttpContext();
// register the BookServlet
// first wait for the DAO-Service
CookBookService cookBookService;
ServiceReference<CookBookService> serviceReference = bundleContext
.getServiceReference(CookBookService.class);
cookBookService = bundleContext.getService(serviceReference);
//now create the servlet
ViewBookServlet viewBookServlet = new ViewBookServlet();
//set the DAO to the Servlet
viewBookServlet.setCookBookService(cookBookService);
final Dictionary<String, Object> initParams = new Hashtable<String, Object>();
try {
httpService.registerServlet("/book", // alias
viewBookServlet,
initParams, httpContext);
36. Whiteboard
• Using the whiteboard approach via Activator
public void start(BundleContext bc) throws Exception {
bundleContext = bc;
// first wait for the DAO-Service
CookBookService cookBookService;
ServiceReference<CookBookService> serviceReference = bundleContext
2014-‐10-‐23
34
.getServiceReference(CookBookService.class);
cookBookService = bundleContext.getService(serviceReference);
// create new Servlet
ViewBookServlet cookBookViewServlet = new ViewBookServlet();
cookBookViewServlet.setCookBookService(cookBookService);
registerServiced = bundleContext.registerService(Servlet.class,
cookBookViewServlet, null);
}
62. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
Hazelcast
63. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
osgi:install mvn:groupId/artifactId/version
Hazelcast
64. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
Hazelcast
65. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
Hazelcast
66. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
Hazelcast
67. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
Hazelcast
68. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
Hazelcast
69. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
Hazelcast
70. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
Hazelcast
DEPRECATED
71. Cellar - Distributing Bundles
2014-‐10-‐23
49
Node A
Node B
Node C
Maven Repository
cluster:install mvn:groupId/artifactId/version
Hazelcast
DEPRECATED
72. Cellar - RMI
2014-‐10-‐23
50
Group 1
Node A
Consumes OSGi-Service
Group 2
Node B
Consumes OSGi-Service
Node C
Consumes OSGi-Service
Node A
Provides OSGi-Service
Node B
Hazelcast Provides OSGi-Service
73. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
74. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
75. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
76. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
77. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
78. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
79. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
80. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
81. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
82. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
83. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
84. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
85. Cellar - Web session failover
2014-‐10-‐23
51
Node A
Hazelcast
DataBase
Client
Filter Servlet
Node B
Filter Servlet
94. JEE with Karaf?
• Adoptions needed? YES
• Minor on Persistence - JNDI lookup
• Minor on transaction - Blueprint JTA
• Wiring of Services:
• Use Blueprint
• Use Servlet 3.0 with CDI - @OsgiService
• Session Replication throughout cluster, it’s still standard
Hazelcast
2014-‐10-‐23
60