SlideShare a Scribd company logo
Enterprise Development 
with …
What needs to be done to run 
JEE like applications inside Karaf?
2014-­‐10-­‐23 
3 
@anierbeck 
- Karaf PMC, Apache Member 
- OPS4j Pax Web Project Lead 
- Senior IT Consultant @codecentric 
- co-Author of Apache Karaf Cookbook
Agenda 
• Enterprise Requirements 
• OSGi with Karaf 
• Enterprise Requirements on Karaf 
• Specialties 
• Http Service 
• Cellar - or how to cluster Karaf 
• Summary 
2014-­‐10-­‐23 
4
Enterprise Requirements
Enterprise Java 
EJB 3.1 CDI 
2014-­‐10-­‐23 
6 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS JAX-RS 
JAXR 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
JNDI 
JAX-RPC 
SAAJ
OSGi with Karaf
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
What is Karaf 
• Container 
• OSGi Applications 
• Ligthtweight 
• expandable to Full Enterprise support 
• Covers all major needs 
• Logging 
• Deployment 
• Configuration 
2014-­‐10-­‐23 
9
Karaf - Overview 
2014-­‐10-­‐23 
10 
Config Logging Deployer 
Console Admin 
OSGi Framework - Felix / Equinox 
JMX 
Blueprint SSH
Enterprise requirements on Karaf
Karaf 
EJB 3.1 CDI 
2014-­‐10-­‐23 
12 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS JAX-RS 
JAXR 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
JNDI 
JAX-RPC 
SAAJ
Enterprise - Pax Web 
EJB 3.1 CDI 
2014-­‐10-­‐23 
13 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS JAX-RS 
JAXR 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
JNDI 
JAX-RPC 
SAAJ
Enterprise - Pax CDI 
EJB 3.1 CDI 
2014-­‐10-­‐23 
14 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS JAX-RS 
JAXR 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
JNDI 
JAX-RPC 
SAAJ
Enterprise - Aries 
EJB 3.1 CDI 
2014-­‐10-­‐23 
15 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS JAX-RS 
JAXR 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
JNDI 
JAX-RPC 
SAAJ
Enterprise - Tomee aka OpenEJB 
EJB 3.1 CDI 
2014-­‐10-­‐23 
16 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS 
JAX-RPC 
JAX-RS 
JAXR 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
SAAJ JNDI
Enterprise - CXF 
EJB 3.1 CDI 
2014-­‐10-­‐23 
17 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS 
JAX-RPC 
JAX-RS 
JAXR 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
SAAJ JNDI
Enterprise - ActiveMQ 
EJB 3.1 CDI 
2014-­‐10-­‐23 
18 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS 
JAX-RPC 
JAX-RS 
JAXR 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
SAAJ JNDI
Enterprise - Cellar 
EJB 3.1 CDI 
2014-­‐10-­‐23 
19 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS 
JAX-RPC 
JAX-RS 
JAXR 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
SAAJ JNDI
Enterprise - Karaf with features 
EJB 3.1 CDI 
2014-­‐10-­‐23 
20 
Servlet 3 
JSF 2 
JSP 
JPA 2 
JTA 
Bean 
Validation 
JAX-WS 
JAX-RPC 
JAX-RS 
JAXR 
SAAJ 
JAXB 
JMS 
JAAS 
JASPIC 
JACC 
JSR-88 
JCA 
JavaMail 
JSR-77 
RMI 
JNDI
Specialties
JPA - Karaf 
2014-­‐10-­‐23 
22 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
version="2.0" > 
<persistence-unit name="cookbook" transaction-type="JTA"> 
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
<jta-data-source> 
osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/cookbook) 
</jta-data-source> 
<class>de.nierbeck.apachecon.persistence.entity.Book</class> 
<class>de.nierbeck.apachecon.persistence.entity.Recipe</class> 
<exclude-unlisted-classes>true</exclude-unlisted-classes> 
<properties> 
<property name="openjpa.Log" value="slf4j" /> 
<property name="openjpa.RuntimeUnenhancedClasses" value="supported" /> 
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/> 
</properties> 
</persistence-unit> 
</persistence>
JPA - Karaf 
2014-­‐10-­‐23 
22 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
version="2.0" > 
<persistence-unit name="cookbook" transaction-type="JTA"> 
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
<jta-data-source> 
osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/cookbook) 
</jta-data-source> 
<class>de.nierbeck.apachecon.persistence.entity.Book</class> 
<class>de.nierbeck.apachecon.persistence.entity.Recipe</class> 
<exclude-unlisted-classes>true</exclude-unlisted-classes> 
<properties> 
<property name="openjpa.Log" value="slf4j" /> 
<property name="openjpa.RuntimeUnenhancedClasses" value="supported" /> 
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/> 
</properties> 
</persistence-unit> 
</persistence> 
To have this blueprint 
JNDI is needed
JTA - Karaf 
2014-­‐10-­‐23 
23 
<blueprint default-activation=„eager" 
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0" 
xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0" 
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> 
<bean id="cookBookServiceImpl" 
class="de.nierbeck.apachecon.persistence.dao.CookBookServiceImpl"> 
<jpa:context property="em" unitname="cookbook" /> 
<tx:transaction method="*" value="Required" /> 
</bean> 
<service id="cookBookService" ref="cookBookServiceImpl" 
interface="de.nierbeck.apachecon.persistence.api.CookBookService" /> 
</blueprint>
JTA - Karaf 
2014-­‐10-­‐23 
23 
<blueprint default-activation=„eager" 
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0" 
xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0" 
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> 
<bean id="cookBookServiceImpl" 
class="de.nierbeck.apachecon.persistence.dao.CookBookServiceImpl"> 
<jpa:context property="em" unitname="cookbook" /> 
<tx:transaction method="*" value="Required" /> 
</bean> 
<service id="cookBookService" ref="cookBookServiceImpl" 
interface="de.nierbeck.apachecon.persistence.api.CookBookService" /> 
</blueprint> 
To have this blueprint 
JPA and JTA is needed
Client - Karaf 
2014-­‐10-­‐23 
24 
<?xml version="1.0" encoding="UTF-8"?> 
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
default-activation="lazy"> 
<reference id="cookBookService" 
interface="de.nierbeck.apachecon.persistence.api.CookBookService" /> 
<command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> 
<command> 
<action class="de.nierbeck.apachecon.commands.CreateBook"> 
<property name="bookService" ref="cookBookService" /> 
</action> 
</command> 
... 
</command-bundle> 
</blueprint>
Demo
Persistence 
2014-­‐10-­‐23 
26
Client 
2014-­‐10-­‐23 
27
Client Shell 
2014-­‐10-­‐23 
28
Client - Shell 
2014-­‐10-­‐23 
29
Client Shell 
2014-­‐10-­‐23 
30
Client - Shell 
2014-­‐10-­‐23 
31
Http Service 
with …
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);
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); 
}
Whiteboard 
2014-­‐10-­‐23 
35 
• Using the whiteboard approach via Blueprint 
<blueprint default-activation="eager"> 
<reference id="cookBookService" 
interface="de.nierbeck.apachecon.persistence.api.CookBookService" /> 
<bean id="viewBookServlet" 
class="de.nierbeck.apachecon.view.ViewBookServlet" > 
<property name="cookBookService" ref="cookBookService"/> 
</bean> 
<service id="servletService" interface="javax.servlet.Servlet" 
ref="viewBookServlet" /> 
</blueprint>
Servlet 3.0 - Just annotation 
2014-­‐10-­‐23 
36 
@WebServlet(urlPatterns = "/book") 
public class ViewBookServlet extends HttpServlet { 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
@Inject 
@OsgiService 
CookBookService cookBookService; 
@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException { 
... 
} 
}
LOST?
Registering - Servlet 
2014-­‐10-­‐23 
38 
Pax-Web 
HTTP Service 
Service- 
Registry 
Servlet
Registering - Servlet 
2014-­‐10-­‐23 
38 
Pax-Web 
HTTP Service 
Service- 
Registry 
Servlet 
Registerd
Registering - Servlet 
2014-­‐10-­‐23 
38 
Pax-Web 
HTTP Service 
Service- 
Registry 
Servlet 
Registerd 
Registerd
Registering - Whiteboard 
2014-­‐10-­‐23 
39 
Pax-Web 
WebContainer 
Service-Tracker 
Service- 
Registry 
Servlet
Registering - Whiteboard 
2014-­‐10-­‐23 
39 
Pax-Web 
WebContainer 
Service-Tracker 
Service- 
Registry 
Servlet 
Registerd
Registering - Whiteboard 
2014-­‐10-­‐23 
39 
Pax-Web 
WebContainer 
Service-Tracker 
Service- 
Registry 
Servlet 
Registerd 
Registerd
Registering - Whiteboard 
2014-­‐10-­‐23 
39 
Pax-Web 
WebContainer 
Service-Tracker 
Service- 
Registry 
Servlet 
Registerd 
Registerd
Registering - WAR 
2014-­‐10-­‐23 
40 
Pax-Web 
WebContainer 
Pax-Web 
WAR Extender 
Service- 
Registry 
WAB-Bundle 
Servlet
Registering - WAR 
2014-­‐10-­‐23 
40 
Pax-Web 
WebContainer 
Pax-Web 
WAR Extender 
Service- 
Registry 
WAB-Bundle 
Servlet 
Registerd
Registering - WAR 
2014-­‐10-­‐23 
40 
Pax-Web 
WebContainer 
Pax-Web 
WAR Extender 
Service- 
Registry 
WAB-Bundle 
Servlet 
Registerd Registerd
Registering - WAR 
2014-­‐10-­‐23 
40 
Pax-Web 
WebContainer 
Pax-Web 
WAR Extender 
Service- 
Registry 
WAB-Bundle 
Servlet 
Registerd Registerd
Servlet + JPA / Service 
2014-­‐10-­‐23 
41 
Blueprint 
Extender 
Pax-Web 
WAR Extender 
JPA-Bundle 
Service- 
Registry 
JPA - 
Service 
WEB-Bundle 
Servlet
Servlet + JPA / Service 
2014-­‐10-­‐23 
41 
Blueprint 
Extender 
Pax-Web 
WAR Extender 
JPA-Bundle 
Service- 
Registry 
JPA - 
Service 
WEB-Bundle 
Servlet 
Registerd
Servlet + JPA / Service 
2014-­‐10-­‐23 
41 
Blueprint 
Extender 
Pax-Web 
WAR Extender 
JPA-Bundle 
Service- 
Registry 
JPA - 
Service 
WEB-Bundle 
Servlet 
Registerd 
Injected
Servlet + JPA / Service 
2014-­‐10-­‐23 
41 
Blueprint 
Extender 
Pax-Web 
WAR Extender 
JPA-Bundle 
Service- 
Registry 
JPA - 
Service 
WEB-Bundle 
Servlet 
Registerd Registerd 
Injected
Demo
View 
2014-­‐10-­‐23 
43
View 
2014-­‐10-­‐23 
44
Cluster 
provided by Apache Karaf Cellar
Cellar - Cluster Communication 
2014-­‐10-­‐23 
46
Cellar - Cluster Communication 
2014-­‐10-­‐23 
47 
Hazelcast
Cellar - Events 
2014-­‐10-­‐23 
48
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
Hazelcast
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
osgi:install mvn:groupId/artifactId/version 
Hazelcast
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
Hazelcast
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
Hazelcast
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
Hazelcast
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
Hazelcast
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
Hazelcast
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
Hazelcast
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
Hazelcast 
DEPRECATED
Cellar - Distributing Bundles 
2014-­‐10-­‐23 
49 
Node A 
Node B 
Node C 
Maven Repository 
cluster:install mvn:groupId/artifactId/version 
Hazelcast 
DEPRECATED
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
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cellar - Web session failover 
2014-­‐10-­‐23 
51 
Node A 
Hazelcast 
DataBase 
Client 
Filter Servlet 
Node B 
Filter Servlet
Cluster - Demo
Presentation Layer 
2014-­‐10-­‐23 
53
web.xml - Hazelcast 
2014-­‐10-­‐23 
54 
• Hazelcast for Session Replication 
<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
version="3.0"> 
<filter> 
<filter-name>hazelcast-filter</filter-name> 
<filter-class>com.hazelcast.web.WebFilter</filter-class> 
<!-- 
Name of the distributed map storing 
your web session objects 
--> 
<init-param> 
<param-name>map-name</param-name> 
<param-value>my-sessions</param-value> 
</init-param> 
<init-param> 
<param-name>sticky-session</param-name> 
<param-value>false</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>hazelcast-filter</filter-name> 
<url-pattern>/*</url-pattern> 
<dispatcher>FORWARD</dispatcher> 
<dispatcher>INCLUDE</dispatcher> 
<dispatcher>REQUEST</dispatcher> 
</filter-mapping> 
<listener> 
<listener-class>com.hazelcast.web.SessionListener</listener-class> 
</listener> 
</web-app>
View 
2014-­‐10-­‐23 
55
View 
2014-­‐10-­‐23 
56
View 
2014-­‐10-­‐23 
57
SUMMARY
Enterprise - Karaf 
2014-­‐10-­‐23 
59 
Servlet 3 
EJB 3.1 CDI 
JSF 2 
JSP 
JPA 2 
JTA 
JAX-WS 
JAX-RPC 
JAX-RS 
JAXR 
SAAJ 
JAXB 
JMS 
JNDI JAAS RMI
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
Resources 
• @anierbeck 
• notitzblog.nierbeck.de 
• https://github.com/ANierbeck/karaf-enterprise-sample 
• www.codecentric.de 
• karaf.apache.org 
• https://ops4j1.jira.com/wiki/display/paxweb/Pax+Web 
• #karaf at irc.codehaus.org 
• https://www.packtpub.com/application-development/apache-karaf-cookbook 
• Pictures, mainly from flickr 
2014-­‐10-­‐23 
61
ApacheCon EU 2014: Enterprise Development with Apache Karaf
THANKS FOR LISTENING
Thanks to the Apache 
Community
Questions
Thanks

More Related Content

What's hot

CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF Security
Kenneth Peeples
 
How Flipkart scales PHP
How Flipkart scales PHPHow Flipkart scales PHP
How Flipkart scales PHP
Siddhartha Reddy Kothakapu
 
Jug Poitou Charentes - Apache, OSGi and Karaf
Jug Poitou Charentes -  Apache, OSGi and KarafJug Poitou Charentes -  Apache, OSGi and Karaf
Jug Poitou Charentes - Apache, OSGi and Karaf
Guillaume Nodet
 
AWS Observability Made Simple
AWS Observability Made SimpleAWS Observability Made Simple
AWS Observability Made Simple
Luciano Mammino
 
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP containerJBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP container
Christina Lin
 
Apache Traffic Server & Lua
Apache Traffic Server & LuaApache Traffic Server & Lua
Apache Traffic Server & Lua
Kit Chan
 
Best Practices - PHP and the Oracle Database
Best Practices - PHP and the Oracle DatabaseBest Practices - PHP and the Oracle Database
Best Practices - PHP and the Oracle Database
Christopher Jones
 
Tomcatx performance-tuning
Tomcatx performance-tuningTomcatx performance-tuning
Tomcatx performance-tuning
Vladimir Khokhryakov
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014
Arun Gupta
 
Kubernetes Operators And The Redis Enterprise Journey: Michal Rabinowitch
Kubernetes Operators And The Redis Enterprise Journey: Michal RabinowitchKubernetes Operators And The Redis Enterprise Journey: Michal Rabinowitch
Kubernetes Operators And The Redis Enterprise Journey: Michal Rabinowitch
Redis Labs
 
Sun Web Server Brief
Sun Web Server BriefSun Web Server Brief
Sun Web Server Brief
Murthy Chintalapati
 
What's New in WildFly 9?
What's New in WildFly 9?What's New in WildFly 9?
What's New in WildFly 9?
Virtual JBoss User Group
 
Cloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , KeynoteCloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , Keynote
rajdeep
 
Connecting Apache Kafka With Mule ESB
Connecting Apache Kafka With Mule ESBConnecting Apache Kafka With Mule ESB
Connecting Apache Kafka With Mule ESB
Jitendra Bafna
 
Moving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesMoving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to Microservices
Jeff Potts
 
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Charles Moulliard
 
Bee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installingBee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installing
Angel Borroy López
 
Guide to alfresco monitoring
Guide to alfresco monitoringGuide to alfresco monitoring
Guide to alfresco monitoring
Miguel Rodriguez
 
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
201511 -  Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...201511 -  Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
Symphony Software Foundation
 

What's hot (19)

CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF Security
 
How Flipkart scales PHP
How Flipkart scales PHPHow Flipkart scales PHP
How Flipkart scales PHP
 
Jug Poitou Charentes - Apache, OSGi and Karaf
Jug Poitou Charentes -  Apache, OSGi and KarafJug Poitou Charentes -  Apache, OSGi and Karaf
Jug Poitou Charentes - Apache, OSGi and Karaf
 
AWS Observability Made Simple
AWS Observability Made SimpleAWS Observability Made Simple
AWS Observability Made Simple
 
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP containerJBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP container
 
Apache Traffic Server & Lua
Apache Traffic Server & LuaApache Traffic Server & Lua
Apache Traffic Server & Lua
 
Best Practices - PHP and the Oracle Database
Best Practices - PHP and the Oracle DatabaseBest Practices - PHP and the Oracle Database
Best Practices - PHP and the Oracle Database
 
Tomcatx performance-tuning
Tomcatx performance-tuningTomcatx performance-tuning
Tomcatx performance-tuning
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014
 
Kubernetes Operators And The Redis Enterprise Journey: Michal Rabinowitch
Kubernetes Operators And The Redis Enterprise Journey: Michal RabinowitchKubernetes Operators And The Redis Enterprise Journey: Michal Rabinowitch
Kubernetes Operators And The Redis Enterprise Journey: Michal Rabinowitch
 
Sun Web Server Brief
Sun Web Server BriefSun Web Server Brief
Sun Web Server Brief
 
What's New in WildFly 9?
What's New in WildFly 9?What's New in WildFly 9?
What's New in WildFly 9?
 
Cloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , KeynoteCloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , Keynote
 
Connecting Apache Kafka With Mule ESB
Connecting Apache Kafka With Mule ESBConnecting Apache Kafka With Mule ESB
Connecting Apache Kafka With Mule ESB
 
Moving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesMoving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to Microservices
 
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013
 
Bee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installingBee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installing
 
Guide to alfresco monitoring
Guide to alfresco monitoringGuide to alfresco monitoring
Guide to alfresco monitoring
 
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
201511 -  Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...201511 -  Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
 

Similar to ApacheCon EU 2014: Enterprise Development with Apache Karaf

Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
IndicThreads
 
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Jagadish Prasath
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6
Arun Gupta
 
J boss
J bossJ boss
J boss
jrfx448
 
Java web services using JAX-WS
Java web services using JAX-WSJava web services using JAX-WS
Java web services using JAX-WS
IndicThreads
 
Running Kafka as a Native Binary Using GraalVM with Ozan Günalp
Running Kafka as a Native Binary Using GraalVM with Ozan GünalpRunning Kafka as a Native Binary Using GraalVM with Ozan Günalp
Running Kafka as a Native Binary Using GraalVM with Ozan Günalp
HostedbyConfluent
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
Bruno Borges
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
Ryan Cuprak
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration Backend
Arun Gupta
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Arun Gupta
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
Ondrej Mihályi
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
Payara
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
Payara
 
18CSC311J Web Design and Development UNIT-3
18CSC311J Web Design and Development UNIT-318CSC311J Web Design and Development UNIT-3
18CSC311J Web Design and Development UNIT-3
sivakumarmcs
 
Faster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzzFaster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzz
JBug Italy
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
Fastly
 
Cooking with Chef
Cooking with ChefCooking with Chef
Cooking with Chef
Ken Robertson
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
Red Hat
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
Luciano Resende
 
Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법
Minchul Jung
 

Similar to ApacheCon EU 2014: Enterprise Development with Apache Karaf (20)

Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
 
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6
 
J boss
J bossJ boss
J boss
 
Java web services using JAX-WS
Java web services using JAX-WSJava web services using JAX-WS
Java web services using JAX-WS
 
Running Kafka as a Native Binary Using GraalVM with Ozan Günalp
Running Kafka as a Native Binary Using GraalVM with Ozan GünalpRunning Kafka as a Native Binary Using GraalVM with Ozan Günalp
Running Kafka as a Native Binary Using GraalVM with Ozan Günalp
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration Backend
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
18CSC311J Web Design and Development UNIT-3
18CSC311J Web Design and Development UNIT-318CSC311J Web Design and Development UNIT-3
18CSC311J Web Design and Development UNIT-3
 
Faster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzzFaster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzz
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
Cooking with Chef
Cooking with ChefCooking with Chef
Cooking with Chef
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
 
Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법
 

Recently uploaded

IS Code SP 23: Handbook on concrete mixes
IS Code SP 23: Handbook  on concrete mixesIS Code SP 23: Handbook  on concrete mixes
IS Code SP 23: Handbook on concrete mixes
Mani Krishna Sarkar
 
Evento anual Splunk .conf24 Highlights recap
Evento anual Splunk .conf24 Highlights recapEvento anual Splunk .conf24 Highlights recap
Evento anual Splunk .conf24 Highlights recap
Rafael Santos
 
Ludo system project report management .pdf
Ludo  system project report management .pdfLudo  system project report management .pdf
Ludo system project report management .pdf
Kamal Acharya
 
DBMS Commands DDL DML DCL ENTITY RELATIONSHIP.pptx
DBMS Commands  DDL DML DCL ENTITY RELATIONSHIP.pptxDBMS Commands  DDL DML DCL ENTITY RELATIONSHIP.pptx
DBMS Commands DDL DML DCL ENTITY RELATIONSHIP.pptx
Tulasi72
 
Lecture 3 Biomass energy...............ppt
Lecture 3 Biomass energy...............pptLecture 3 Biomass energy...............ppt
Lecture 3 Biomass energy...............ppt
RujanTimsina1
 
Unblocking The Main Thread - Solving ANRs and Frozen Frames
Unblocking The Main Thread - Solving ANRs and Frozen FramesUnblocking The Main Thread - Solving ANRs and Frozen Frames
Unblocking The Main Thread - Solving ANRs and Frozen Frames
Sinan KOZAK
 
Thermodynamics Digital Material basics subject
Thermodynamics Digital Material basics subjectThermodynamics Digital Material basics subject
Thermodynamics Digital Material basics subject
JigneshChhatbar1
 
Rockets and missiles notes engineering ppt
Rockets and missiles notes engineering pptRockets and missiles notes engineering ppt
Rockets and missiles notes engineering ppt
archithaero
 
Rotary Intersection in traffic engineering.pptx
Rotary Intersection in traffic engineering.pptxRotary Intersection in traffic engineering.pptx
Rotary Intersection in traffic engineering.pptx
surekha1287
 
RECENT DEVELOPMENTS IN RING SPINNING.pptx
RECENT DEVELOPMENTS IN RING SPINNING.pptxRECENT DEVELOPMENTS IN RING SPINNING.pptx
RECENT DEVELOPMENTS IN RING SPINNING.pptx
peacesoul123
 
Online toll plaza booking system project report.doc.pdf
Online toll plaza booking system project report.doc.pdfOnline toll plaza booking system project report.doc.pdf
Online toll plaza booking system project report.doc.pdf
Kamal Acharya
 
Jet Propulsion and its working principle.pdf
Jet Propulsion and its working principle.pdfJet Propulsion and its working principle.pdf
Jet Propulsion and its working principle.pdf
KIET Group of Institutions
 
Introduction to IP address concept - Computer Networking
Introduction to IP address concept - Computer NetworkingIntroduction to IP address concept - Computer Networking
Introduction to IP address concept - Computer Networking
Md.Shohel Rana ( M.Sc in CSE Khulna University of Engineering & Technology (KUET))
 
Time-State Analytics: MinneAnalytics 2024 Talk
Time-State Analytics: MinneAnalytics 2024 TalkTime-State Analytics: MinneAnalytics 2024 Talk
Time-State Analytics: MinneAnalytics 2024 Talk
Evan Chan
 
Data Visualization in Python of b.tech student.pptx
Data Visualization in Python of b.tech student.pptxData Visualization in Python of b.tech student.pptx
Data Visualization in Python of b.tech student.pptx
TelanganaPakkaFolk
 
Vernier Caliper and How to use Vernier Caliper.ppsx
Vernier Caliper and How to use Vernier Caliper.ppsxVernier Caliper and How to use Vernier Caliper.ppsx
Vernier Caliper and How to use Vernier Caliper.ppsx
Tool and Die Tech
 
Concepts Basic/ Technical Electronic Material.pdf
Concepts Basic/ Technical Electronic Material.pdfConcepts Basic/ Technical Electronic Material.pdf
Concepts Basic/ Technical Electronic Material.pdf
OBD II
 
Trends in Computer Aided Design and MFG.
Trends in Computer Aided Design and MFG.Trends in Computer Aided Design and MFG.
Trends in Computer Aided Design and MFG.
Tool and Die Tech
 
1239_2.pdf IS CODE FOR GI PIPE FOR PROCUREMENT
1239_2.pdf IS CODE FOR GI PIPE FOR PROCUREMENT1239_2.pdf IS CODE FOR GI PIPE FOR PROCUREMENT
1239_2.pdf IS CODE FOR GI PIPE FOR PROCUREMENT
Mani Krishna Sarkar
 
GUIA_LEGAL_CHAPTER-9_COLOMBIAN ELECTRICITY (1).pdf
GUIA_LEGAL_CHAPTER-9_COLOMBIAN ELECTRICITY (1).pdfGUIA_LEGAL_CHAPTER-9_COLOMBIAN ELECTRICITY (1).pdf
GUIA_LEGAL_CHAPTER-9_COLOMBIAN ELECTRICITY (1).pdf
ProexportColombia1
 

Recently uploaded (20)

IS Code SP 23: Handbook on concrete mixes
IS Code SP 23: Handbook  on concrete mixesIS Code SP 23: Handbook  on concrete mixes
IS Code SP 23: Handbook on concrete mixes
 
Evento anual Splunk .conf24 Highlights recap
Evento anual Splunk .conf24 Highlights recapEvento anual Splunk .conf24 Highlights recap
Evento anual Splunk .conf24 Highlights recap
 
Ludo system project report management .pdf
Ludo  system project report management .pdfLudo  system project report management .pdf
Ludo system project report management .pdf
 
DBMS Commands DDL DML DCL ENTITY RELATIONSHIP.pptx
DBMS Commands  DDL DML DCL ENTITY RELATIONSHIP.pptxDBMS Commands  DDL DML DCL ENTITY RELATIONSHIP.pptx
DBMS Commands DDL DML DCL ENTITY RELATIONSHIP.pptx
 
Lecture 3 Biomass energy...............ppt
Lecture 3 Biomass energy...............pptLecture 3 Biomass energy...............ppt
Lecture 3 Biomass energy...............ppt
 
Unblocking The Main Thread - Solving ANRs and Frozen Frames
Unblocking The Main Thread - Solving ANRs and Frozen FramesUnblocking The Main Thread - Solving ANRs and Frozen Frames
Unblocking The Main Thread - Solving ANRs and Frozen Frames
 
Thermodynamics Digital Material basics subject
Thermodynamics Digital Material basics subjectThermodynamics Digital Material basics subject
Thermodynamics Digital Material basics subject
 
Rockets and missiles notes engineering ppt
Rockets and missiles notes engineering pptRockets and missiles notes engineering ppt
Rockets and missiles notes engineering ppt
 
Rotary Intersection in traffic engineering.pptx
Rotary Intersection in traffic engineering.pptxRotary Intersection in traffic engineering.pptx
Rotary Intersection in traffic engineering.pptx
 
RECENT DEVELOPMENTS IN RING SPINNING.pptx
RECENT DEVELOPMENTS IN RING SPINNING.pptxRECENT DEVELOPMENTS IN RING SPINNING.pptx
RECENT DEVELOPMENTS IN RING SPINNING.pptx
 
Online toll plaza booking system project report.doc.pdf
Online toll plaza booking system project report.doc.pdfOnline toll plaza booking system project report.doc.pdf
Online toll plaza booking system project report.doc.pdf
 
Jet Propulsion and its working principle.pdf
Jet Propulsion and its working principle.pdfJet Propulsion and its working principle.pdf
Jet Propulsion and its working principle.pdf
 
Introduction to IP address concept - Computer Networking
Introduction to IP address concept - Computer NetworkingIntroduction to IP address concept - Computer Networking
Introduction to IP address concept - Computer Networking
 
Time-State Analytics: MinneAnalytics 2024 Talk
Time-State Analytics: MinneAnalytics 2024 TalkTime-State Analytics: MinneAnalytics 2024 Talk
Time-State Analytics: MinneAnalytics 2024 Talk
 
Data Visualization in Python of b.tech student.pptx
Data Visualization in Python of b.tech student.pptxData Visualization in Python of b.tech student.pptx
Data Visualization in Python of b.tech student.pptx
 
Vernier Caliper and How to use Vernier Caliper.ppsx
Vernier Caliper and How to use Vernier Caliper.ppsxVernier Caliper and How to use Vernier Caliper.ppsx
Vernier Caliper and How to use Vernier Caliper.ppsx
 
Concepts Basic/ Technical Electronic Material.pdf
Concepts Basic/ Technical Electronic Material.pdfConcepts Basic/ Technical Electronic Material.pdf
Concepts Basic/ Technical Electronic Material.pdf
 
Trends in Computer Aided Design and MFG.
Trends in Computer Aided Design and MFG.Trends in Computer Aided Design and MFG.
Trends in Computer Aided Design and MFG.
 
1239_2.pdf IS CODE FOR GI PIPE FOR PROCUREMENT
1239_2.pdf IS CODE FOR GI PIPE FOR PROCUREMENT1239_2.pdf IS CODE FOR GI PIPE FOR PROCUREMENT
1239_2.pdf IS CODE FOR GI PIPE FOR PROCUREMENT
 
GUIA_LEGAL_CHAPTER-9_COLOMBIAN ELECTRICITY (1).pdf
GUIA_LEGAL_CHAPTER-9_COLOMBIAN ELECTRICITY (1).pdfGUIA_LEGAL_CHAPTER-9_COLOMBIAN ELECTRICITY (1).pdf
GUIA_LEGAL_CHAPTER-9_COLOMBIAN ELECTRICITY (1).pdf
 

ApacheCon EU 2014: Enterprise Development with Apache Karaf

  • 2. What needs to be done to run JEE like applications inside Karaf?
  • 3. 2014-­‐10-­‐23 3 @anierbeck - Karaf PMC, Apache Member - OPS4j Pax Web Project Lead - Senior IT Consultant @codecentric - co-Author of Apache Karaf Cookbook
  • 4. Agenda • Enterprise Requirements • OSGi with Karaf • Enterprise Requirements on Karaf • Specialties • Http Service • Cellar - or how to cluster Karaf • Summary 2014-­‐10-­‐23 4
  • 6. Enterprise Java EJB 3.1 CDI 2014-­‐10-­‐23 6 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RS JAXR JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI JNDI JAX-RPC SAAJ
  • 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
  • 10. Karaf - Overview 2014-­‐10-­‐23 10 Config Logging Deployer Console Admin OSGi Framework - Felix / Equinox JMX Blueprint SSH
  • 12. Karaf EJB 3.1 CDI 2014-­‐10-­‐23 12 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RS JAXR JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI JNDI JAX-RPC SAAJ
  • 13. Enterprise - Pax Web EJB 3.1 CDI 2014-­‐10-­‐23 13 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RS JAXR JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI JNDI JAX-RPC SAAJ
  • 14. Enterprise - Pax CDI EJB 3.1 CDI 2014-­‐10-­‐23 14 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RS JAXR JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI JNDI JAX-RPC SAAJ
  • 15. Enterprise - Aries EJB 3.1 CDI 2014-­‐10-­‐23 15 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RS JAXR JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI JNDI JAX-RPC SAAJ
  • 16. Enterprise - Tomee aka OpenEJB EJB 3.1 CDI 2014-­‐10-­‐23 16 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RPC JAX-RS JAXR JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI SAAJ JNDI
  • 17. Enterprise - CXF EJB 3.1 CDI 2014-­‐10-­‐23 17 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RPC JAX-RS JAXR JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI SAAJ JNDI
  • 18. Enterprise - ActiveMQ EJB 3.1 CDI 2014-­‐10-­‐23 18 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RPC JAX-RS JAXR JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI SAAJ JNDI
  • 19. Enterprise - Cellar EJB 3.1 CDI 2014-­‐10-­‐23 19 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RPC JAX-RS JAXR JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI SAAJ JNDI
  • 20. Enterprise - Karaf with features EJB 3.1 CDI 2014-­‐10-­‐23 20 Servlet 3 JSF 2 JSP JPA 2 JTA Bean Validation JAX-WS JAX-RPC JAX-RS JAXR SAAJ JAXB JMS JAAS JASPIC JACC JSR-88 JCA JavaMail JSR-77 RMI JNDI
  • 22. JPA - Karaf 2014-­‐10-­‐23 22 <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0" > <persistence-unit name="cookbook" transaction-type="JTA"> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> <jta-data-source> osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/cookbook) </jta-data-source> <class>de.nierbeck.apachecon.persistence.entity.Book</class> <class>de.nierbeck.apachecon.persistence.entity.Recipe</class> <exclude-unlisted-classes>true</exclude-unlisted-classes> <properties> <property name="openjpa.Log" value="slf4j" /> <property name="openjpa.RuntimeUnenhancedClasses" value="supported" /> <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/> </properties> </persistence-unit> </persistence>
  • 23. JPA - Karaf 2014-­‐10-­‐23 22 <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0" > <persistence-unit name="cookbook" transaction-type="JTA"> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> <jta-data-source> osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/cookbook) </jta-data-source> <class>de.nierbeck.apachecon.persistence.entity.Book</class> <class>de.nierbeck.apachecon.persistence.entity.Recipe</class> <exclude-unlisted-classes>true</exclude-unlisted-classes> <properties> <property name="openjpa.Log" value="slf4j" /> <property name="openjpa.RuntimeUnenhancedClasses" value="supported" /> <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/> </properties> </persistence-unit> </persistence> To have this blueprint JNDI is needed
  • 24. JTA - Karaf 2014-­‐10-­‐23 23 <blueprint default-activation=„eager" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0" xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0" xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> <bean id="cookBookServiceImpl" class="de.nierbeck.apachecon.persistence.dao.CookBookServiceImpl"> <jpa:context property="em" unitname="cookbook" /> <tx:transaction method="*" value="Required" /> </bean> <service id="cookBookService" ref="cookBookServiceImpl" interface="de.nierbeck.apachecon.persistence.api.CookBookService" /> </blueprint>
  • 25. JTA - Karaf 2014-­‐10-­‐23 23 <blueprint default-activation=„eager" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0" xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0" xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> <bean id="cookBookServiceImpl" class="de.nierbeck.apachecon.persistence.dao.CookBookServiceImpl"> <jpa:context property="em" unitname="cookbook" /> <tx:transaction method="*" value="Required" /> </bean> <service id="cookBookService" ref="cookBookServiceImpl" interface="de.nierbeck.apachecon.persistence.api.CookBookService" /> </blueprint> To have this blueprint JPA and JTA is needed
  • 26. Client - Karaf 2014-­‐10-­‐23 24 <?xml version="1.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy"> <reference id="cookBookService" interface="de.nierbeck.apachecon.persistence.api.CookBookService" /> <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> <command> <action class="de.nierbeck.apachecon.commands.CreateBook"> <property name="bookService" ref="cookBookService" /> </action> </command> ... </command-bundle> </blueprint>
  • 27. Demo
  • 31. Client - Shell 2014-­‐10-­‐23 29
  • 33. Client - Shell 2014-­‐10-­‐23 31
  • 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); }
  • 37. Whiteboard 2014-­‐10-­‐23 35 • Using the whiteboard approach via Blueprint <blueprint default-activation="eager"> <reference id="cookBookService" interface="de.nierbeck.apachecon.persistence.api.CookBookService" /> <bean id="viewBookServlet" class="de.nierbeck.apachecon.view.ViewBookServlet" > <property name="cookBookService" ref="cookBookService"/> </bean> <service id="servletService" interface="javax.servlet.Servlet" ref="viewBookServlet" /> </blueprint>
  • 38. Servlet 3.0 - Just annotation 2014-­‐10-­‐23 36 @WebServlet(urlPatterns = "/book") public class ViewBookServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; @Inject @OsgiService CookBookService cookBookService; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ... } }
  • 39. LOST?
  • 40. Registering - Servlet 2014-­‐10-­‐23 38 Pax-Web HTTP Service Service- Registry Servlet
  • 41. Registering - Servlet 2014-­‐10-­‐23 38 Pax-Web HTTP Service Service- Registry Servlet Registerd
  • 42. Registering - Servlet 2014-­‐10-­‐23 38 Pax-Web HTTP Service Service- Registry Servlet Registerd Registerd
  • 43. Registering - Whiteboard 2014-­‐10-­‐23 39 Pax-Web WebContainer Service-Tracker Service- Registry Servlet
  • 44. Registering - Whiteboard 2014-­‐10-­‐23 39 Pax-Web WebContainer Service-Tracker Service- Registry Servlet Registerd
  • 45. Registering - Whiteboard 2014-­‐10-­‐23 39 Pax-Web WebContainer Service-Tracker Service- Registry Servlet Registerd Registerd
  • 46. Registering - Whiteboard 2014-­‐10-­‐23 39 Pax-Web WebContainer Service-Tracker Service- Registry Servlet Registerd Registerd
  • 47. Registering - WAR 2014-­‐10-­‐23 40 Pax-Web WebContainer Pax-Web WAR Extender Service- Registry WAB-Bundle Servlet
  • 48. Registering - WAR 2014-­‐10-­‐23 40 Pax-Web WebContainer Pax-Web WAR Extender Service- Registry WAB-Bundle Servlet Registerd
  • 49. Registering - WAR 2014-­‐10-­‐23 40 Pax-Web WebContainer Pax-Web WAR Extender Service- Registry WAB-Bundle Servlet Registerd Registerd
  • 50. Registering - WAR 2014-­‐10-­‐23 40 Pax-Web WebContainer Pax-Web WAR Extender Service- Registry WAB-Bundle Servlet Registerd Registerd
  • 51. Servlet + JPA / Service 2014-­‐10-­‐23 41 Blueprint Extender Pax-Web WAR Extender JPA-Bundle Service- Registry JPA - Service WEB-Bundle Servlet
  • 52. Servlet + JPA / Service 2014-­‐10-­‐23 41 Blueprint Extender Pax-Web WAR Extender JPA-Bundle Service- Registry JPA - Service WEB-Bundle Servlet Registerd
  • 53. Servlet + JPA / Service 2014-­‐10-­‐23 41 Blueprint Extender Pax-Web WAR Extender JPA-Bundle Service- Registry JPA - Service WEB-Bundle Servlet Registerd Injected
  • 54. Servlet + JPA / Service 2014-­‐10-­‐23 41 Blueprint Extender Pax-Web WAR Extender JPA-Bundle Service- Registry JPA - Service WEB-Bundle Servlet Registerd Registerd Injected
  • 55. Demo
  • 58. Cluster provided by Apache Karaf Cellar
  • 59. Cellar - Cluster Communication 2014-­‐10-­‐23 46
  • 60. Cellar - Cluster Communication 2014-­‐10-­‐23 47 Hazelcast
  • 61. Cellar - Events 2014-­‐10-­‐23 48
  • 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
  • 88. web.xml - Hazelcast 2014-­‐10-­‐23 54 • Hazelcast for Session Replication <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <filter> <filter-name>hazelcast-filter</filter-name> <filter-class>com.hazelcast.web.WebFilter</filter-class> <!-- Name of the distributed map storing your web session objects --> <init-param> <param-name>map-name</param-name> <param-value>my-sessions</param-value> </init-param> <init-param> <param-name>sticky-session</param-name> <param-value>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>hazelcast-filter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>REQUEST</dispatcher> </filter-mapping> <listener> <listener-class>com.hazelcast.web.SessionListener</listener-class> </listener> </web-app>
  • 93. Enterprise - Karaf 2014-­‐10-­‐23 59 Servlet 3 EJB 3.1 CDI JSF 2 JSP JPA 2 JTA JAX-WS JAX-RPC JAX-RS JAXR SAAJ JAXB JMS JNDI JAAS RMI
  • 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
  • 95. Resources • @anierbeck • notitzblog.nierbeck.de • https://github.com/ANierbeck/karaf-enterprise-sample • www.codecentric.de • karaf.apache.org • https://ops4j1.jira.com/wiki/display/paxweb/Pax+Web • #karaf at irc.codehaus.org • https://www.packtpub.com/application-development/apache-karaf-cookbook • Pictures, mainly from flickr 2014-­‐10-­‐23 61
  • 98. Thanks to the Apache Community
  • 100. Thanks