SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
HOW TO CONNECT
YOUR
OSGI APPLICATION
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
2
How to connect your OSGi application
Speaker
Dirk Fauth
System-Architect
Eclipse Committer
Robert Bosch GmbH
Franz-Oechsle-Straße 4
73207 Plochingen
dirk.fauth@de.bosch.com
www.bosch.com
blog.vogella.com/author/fipro/
Twitter: fipro78
INTRODUCTION
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
4
Introduction
Application A Application B
S
S
S
S
Communication Protocol,
e.g. JSON via HTTP
What does OSGi provide to realize this szenario?
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
5
Setup
JVM
OSGi Framework
JSON Converter
Servlet Container
???
e.g. Equinox or Felix
SCR Felix SCR
e.g. Jetty
Application / Services
e.g. Jackson
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
6
Setup - Service
public interface StringModifier {
String modify(String input);
}
@Component
public class StringInverter implements StringModifier {
@Override
public String modify(String input) {
return new StringBuilder(input).reverse().toString();
}
}
M(ost) U(seless) S(ervice) E(ver)
HTTP SERVICE
HTTP WHITEBOARD
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
8
HTTP Service / HTTP Whiteboard
JVM
OSGi Framework
JSON Converter
Servlet Container
HTTP Service / HTTP Whiteboard
SCR
Application / Services
Servlet
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
9
HTTP Service / HTTP Whiteboard
@Component(
service=Servlet.class,
property= "osgi.http.whiteboard.servlet.pattern=/modify",
scope=ServiceScope.PROTOTYPE)
public class ModifierServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Reference private volatile List<StringModifier> modifier;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType(MediaType.APPLICATION_JSON);
ObjectMapper objectMapper = new ObjectMapper();
try {
String json = objectMapper.writeValueAsString(
modifier.stream().map(x -> x.modify(input)).collect(toList()));
resp.getWriter().write(json);
} catch (JsonProcessingException e) { ... }
}
}
@Component(
service=Servlet.class,
property= "osgi.http.whiteboard.servlet.pattern=/modify",
scope=ServiceScope.PROTOTYPE)
public class ModifierServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Reference private volatile List<StringModifier> modifier;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType(MediaType.APPLICATION_JSON);
ObjectMapper objectMapper = new ObjectMapper();
try {
String json = objectMapper.writeValueAsString(
modifier.stream().map(x -> x.modify(input)).collect(toList()));
resp.getWriter().write(json);
} catch (JsonProcessingException e) { ... }
}
}
@Component(
service=Servlet.class,
property= "osgi.http.whiteboard.servlet.pattern=/modify",
scope=ServiceScope.PROTOTYPE)
public class ModifierServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Reference private volatile List<StringModifier> modifier;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType(MediaType.APPLICATION_JSON);
ObjectMapper objectMapper = new ObjectMapper();
try {
String json = objectMapper.writeValueAsString(
modifier.stream().map(x -> x.modify(input)).collect(toList()));
resp.getWriter().write(json);
} catch (JsonProcessingException e) { ... }
}
}
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
10
HTTP Service / HTTP Whiteboard
Service URL: http://localhost:8080/modify?value=Eclipse
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
11
 Cons
 Dependency to Servlet API
 Conversion done in the service
 Pros
 Very simple
 Small number of bundles
HTTP Service / HTTP Whiteboard
REMOTE
SERVICES
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
13
Remote Services
Service
Producer
Remote Service
Implementation
endpoint
created by RSA
announced by Discovery
Service
Consumer
endpoint
discovered by Discovery
proxied by RSA
Remote Service
Implementation
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
15
Remote Services
JVM
OSGi Framework
JSON Converter
Servlet Container
HTTP Service / HTTP Whiteboard
SCR
Application / Services
Remote Service / RSA
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
16
Remote Services
@Component(property= {
"service.exported.interfaces=*",
"service.exported.configs=ecf.generic.server"
})
public class StringInverter implements StringModifier {
@Override
public String modify(String input) {
return new StringBuilder(input).reverse().toString();
}
}
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
17
Remote Services
@Path("/modify")
@Component(
immediate = true,
property = { "service.exported.interfaces=*",
"service.intents=osgi.async",
"service.intents=jaxrs",
"osgi.basic.timeout=50000" })
public class ModifierServiceImpl implements ModifierService {
@Reference private volatile List<StringModifier> modifier;
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{value}")
@Override
public List<String> getModifications(@PathParam("value") String value) {
return modifier.stream().map(x -> x.modify(value)).collect(Collectors.toList());
}
}
@Path("/modify")
@Component(
immediate = true,
property = { "service.exported.interfaces=*",
"service.intents=osgi.async",
"service.intents=jaxrs",
"osgi.basic.timeout=50000" })
public class ModifierServiceImpl implements ModifierService {
@Reference private volatile List<StringModifier> modifier;
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{value}")
@Override
public List<String> getModifications(@PathParam("value") String value) {
return modifier.stream().map(x -> x.modify(value)).collect(Collectors.toList());
}
}
@Path("/modify")
@Component(
immediate = true,
property = { "service.exported.interfaces=*",
"service.intents=osgi.async",
"service.intents=jaxrs",
"osgi.basic.timeout=50000" })
public class ModifierServiceImpl implements ModifierService {
@Reference private volatile List<StringModifier> modifier;
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{value}")
@Override
public List<String> getModifications(@PathParam("value") String value) {
return modifier.stream().map(x -> x.modify(value)).collect(Collectors.toList());
}
}
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
14
 Various protocols available (e.g. via ECF)
 Discovery
‒ Zeroconf/aka Bonjour/Rendevous (JmDNS)
‒ jSLP aka SLP/RFC2608
 Distribution Provider
‒ Generic Provider
‒ r-OSGi Provider
‒ Jax-RS Distribution Provider
Remote Services
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
18
Remote Services
Service URL: http://localhost:8080/1/modify/Eclipse
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
19
 Cons
 Complicated bundle composition
 High risk with networking issues
 Client side is an OSGi application
 URL contains dynamic containerID
 Pros
 Simple definition via component
properties
 Usage of default JAX-RS
annotations
 Importing remote services without
efforts in programming
Remote Services
JAX-RS
WHITEBOARD
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
21
JAX-RS Whiteboard
JVM
OSGi Framework
JSON Converter
Servlet Container
HTTP Service / HTTP Whiteboard
SCR
Application / Services
JAX-RS Whiteboard
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
22
JAX-RS Whiteboard
@Path("/modify")
@Produces(MediaType.APPLICATION_JSON)
@Component(service=ModifierServiceImpl.class)
@JaxrsResource
@JSONRequired
public class ModifierServiceImpl {
@Reference
private volatile List<StringModifier> modifier;
@GET
@Path("/{value}")
public List<String> getModifications(@PathParam("value") String value) {
return modifier.stream().map(x -> x.modify(value)).collect(toList());
}
}
@Path("/modify")
@Produces(MediaType.APPLICATION_JSON)
@Component(service=ModifierServiceImpl.class)
@JaxrsResource
@JSONRequired
public class ModifierServiceImpl {
@Reference
private volatile List<StringModifier> modifier;
@GET
@Path("/{value}")
public List<String> getModifications(@PathParam("value") String value) {
return modifier.stream().map(x -> x.modify(value)).collect(toList());
}
}
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
23
JAX-RS Whiteboard
@Component(scope = PROTOTYPE)
@JaxrsExtension
@JaxrsMediaType(APPLICATION_JSON)
public class JacksonJsonConverter<T>
implements MessageBodyReader<T>, MessageBodyWriter<T> {
@Reference(service=LoggerFactory.class)
private Logger logger;
private final Converter converter = Converters.newConverterBuilder()
.rule(String.class, this::toJson)
.rule(this::toObject)
.build();
private ObjectMapper mapper = new ObjectMapper();
...
@Component(scope = PROTOTYPE)
@JaxrsExtension
@JaxrsMediaType(APPLICATION_JSON)
public class JacksonJsonConverter<T>
implements MessageBodyReader<T>, MessageBodyWriter<T> {
@Reference(service=LoggerFactory.class)
private Logger logger;
private final Converter converter = Converters.newConverterBuilder()
.rule(String.class, this::toJson)
.rule(this::toObject)
.build();
private ObjectMapper mapper = new ObjectMapper();
...
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
24
JAX-RS Whiteboard
Service URL: http://localhost:8080/modify/Eclipse
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
26
 Cons
 Only CXF based reference
implementation from Aries
available
 osgi.contract capabilities not
widely integrated yet
 Pros
 Simple definition via Component
Property Types
 Usage of default JAX-RS
annotations
 Easy combination of different
OSGi R7 specifications
 Runtime requirements resolved
via osgi.contract capabilities
JAX-RS Whiteboard
ALTERNATIVES
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
28
 OSGi JAX-RS Connector
https://github.com/hstaudacher/osgi-jax-rs-connector
 Inactive for > 3 years
 With R7 actually no use anymore
 enRoute
https://enroute.osgi.org
 Basic guidance for using R7 specifications
 Maven based toolchain
 Custom communication implementations
Alternatives
REFERENCES
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
30
 OSGi Core Release 7 Specification
https://osgi.org/specification/osgi.core/7.0.0/
 OSGi Compendium Release 7 Specification
https://osgi.org/specification/osgi.cmpn/7.0.0/
 Eclipse Communication Framework Wiki
https://wiki.eclipse.org/Eclipse_Communication_Framework_Project#OS
Gi_Remote_Services
References
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
31
 HTTP Service Specification
https://osgi.org/specification/osgi.cmpn/7.0.0/service.http.html
 HTTP Whiteboard Specification
https://osgi.org/specification/osgi.cmpn/7.0.0/service.http.whiteboard.html
 Remote Services
https://osgi.org/specification/osgi.cmpn/7.0.0/service.remoteservices.html
 Remote Service Admin Service Specification
https://osgi.org/specification/osgi.cmpn/7.0.0/service.remoteserviceadmin
.html
 JAX-RS Whiteboard Specification
https://osgi.org/specification/osgi.cmpn/7.0.0/service.jaxrs.html
References
How to connect your OSGi application
Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018
© Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen.
32
 ECF JAX-RS Distribution Provider
https://github.com/ECF/JaxRSProviders
https://wiki.eclipse.org/Tutorial:_Exposing_a_Jax_REST_service_as_an_
OSGi_Remote_Service
 Access OSGi services via web interface
http://blog.vogella.com/2017/04/20/access-osgi-services-via-web-
interface/
 Microservices with OSGi
https://www.eclipsecon.org/europe2017/session/microservices-osgi
https://www.youtube.com/watch?v=IOusIWAziFE
 Example sources
https://github.com/fipro78/access_osgi_services
References
How to connect your OSGi application - Dirk Fauth (Bosch)

Mais conteúdo relacionado

Mais procurados

MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...
MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...
MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...Jitendra Bafna
 
Rtf v2 ingress muleSoft meetup self managed kubernetes
Rtf v2 ingress muleSoft meetup self managed kubernetesRtf v2 ingress muleSoft meetup self managed kubernetes
Rtf v2 ingress muleSoft meetup self managed kubernetesSandeep Deshmukh
 
Integrating FIDO Authentication & Federation Protocols
Integrating FIDO Authentication & Federation ProtocolsIntegrating FIDO Authentication & Federation Protocols
Integrating FIDO Authentication & Federation ProtocolsFIDO Alliance
 
FIWARE Wednesday Webinars - FIWARE Overview
FIWARE Wednesday Webinars - FIWARE OverviewFIWARE Wednesday Webinars - FIWARE Overview
FIWARE Wednesday Webinars - FIWARE OverviewFIWARE
 
Aplicación práctica de FIWARE al Internet de las Cosas
Aplicación práctica de FIWARE al Internet de las CosasAplicación práctica de FIWARE al Internet de las Cosas
Aplicación práctica de FIWARE al Internet de las CosasJavier García Puga
 
Development of 5G IAM Architecture
Development of 5G IAM ArchitectureDevelopment of 5G IAM Architecture
Development of 5G IAM ArchitectureBjorn Hjelm
 
Netflix Architecture Tutorial at Gluecon
Netflix Architecture Tutorial at GlueconNetflix Architecture Tutorial at Gluecon
Netflix Architecture Tutorial at GlueconAdrian Cockcroft
 
Salesforce Integration with MuleSoft | MuleSoft Mysore Meetup #12
Salesforce Integration with MuleSoft | MuleSoft Mysore Meetup #12Salesforce Integration with MuleSoft | MuleSoft Mysore Meetup #12
Salesforce Integration with MuleSoft | MuleSoft Mysore Meetup #12MysoreMuleSoftMeetup
 
FIWARE Wednesday Webinars - IoT Agents
FIWARE Wednesday Webinars - IoT AgentsFIWARE Wednesday Webinars - IoT Agents
FIWARE Wednesday Webinars - IoT AgentsFIWARE
 
Corso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementCorso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementSalvatore Cordiano
 
Why API Ops is the Next Wave of DevOps
Why API Ops is the Next Wave of DevOpsWhy API Ops is the Next Wave of DevOps
Why API Ops is the Next Wave of DevOpsJohn Musser
 
Mule Common Logging & Error Handling Framework
Mule Common Logging & Error Handling FrameworkMule Common Logging & Error Handling Framework
Mule Common Logging & Error Handling FrameworkVijay Reddy
 
Websphere interview Questions
Websphere interview QuestionsWebsphere interview Questions
Websphere interview Questionsgummadi1
 
خدمات الويب (Web Services) و كيف تنشئها
 خدمات الويب (Web Services) و كيف تنشئها  خدمات الويب (Web Services) و كيف تنشئها
خدمات الويب (Web Services) و كيف تنشئها lunarhalo
 
Opa gatekeeper
Opa gatekeeperOpa gatekeeper
Opa gatekeeperRita Zhang
 
FIWARE Context Information Management
FIWARE Context Information ManagementFIWARE Context Information Management
FIWARE Context Information Managementfisuda
 

Mais procurados (20)

MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...
MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...
MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...
 
Rtf v2 ingress muleSoft meetup self managed kubernetes
Rtf v2 ingress muleSoft meetup self managed kubernetesRtf v2 ingress muleSoft meetup self managed kubernetes
Rtf v2 ingress muleSoft meetup self managed kubernetes
 
Integrating FIDO Authentication & Federation Protocols
Integrating FIDO Authentication & Federation ProtocolsIntegrating FIDO Authentication & Federation Protocols
Integrating FIDO Authentication & Federation Protocols
 
FIWARE Wednesday Webinars - FIWARE Overview
FIWARE Wednesday Webinars - FIWARE OverviewFIWARE Wednesday Webinars - FIWARE Overview
FIWARE Wednesday Webinars - FIWARE Overview
 
Aplicación práctica de FIWARE al Internet de las Cosas
Aplicación práctica de FIWARE al Internet de las CosasAplicación práctica de FIWARE al Internet de las Cosas
Aplicación práctica de FIWARE al Internet de las Cosas
 
Hadoop security
Hadoop securityHadoop security
Hadoop security
 
Development of 5G IAM Architecture
Development of 5G IAM ArchitectureDevelopment of 5G IAM Architecture
Development of 5G IAM Architecture
 
Netflix Architecture Tutorial at Gluecon
Netflix Architecture Tutorial at GlueconNetflix Architecture Tutorial at Gluecon
Netflix Architecture Tutorial at Gluecon
 
Managing APIs with MuleSoft
Managing APIs with MuleSoftManaging APIs with MuleSoft
Managing APIs with MuleSoft
 
Salesforce Integration with MuleSoft | MuleSoft Mysore Meetup #12
Salesforce Integration with MuleSoft | MuleSoft Mysore Meetup #12Salesforce Integration with MuleSoft | MuleSoft Mysore Meetup #12
Salesforce Integration with MuleSoft | MuleSoft Mysore Meetup #12
 
FIWARE Wednesday Webinars - IoT Agents
FIWARE Wednesday Webinars - IoT AgentsFIWARE Wednesday Webinars - IoT Agents
FIWARE Wednesday Webinars - IoT Agents
 
Corso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementCorso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document Management
 
Apache Kafka Security
Apache Kafka Security Apache Kafka Security
Apache Kafka Security
 
Why API Ops is the Next Wave of DevOps
Why API Ops is the Next Wave of DevOpsWhy API Ops is the Next Wave of DevOps
Why API Ops is the Next Wave of DevOps
 
Mule Common Logging & Error Handling Framework
Mule Common Logging & Error Handling FrameworkMule Common Logging & Error Handling Framework
Mule Common Logging & Error Handling Framework
 
Websphere interview Questions
Websphere interview QuestionsWebsphere interview Questions
Websphere interview Questions
 
خدمات الويب (Web Services) و كيف تنشئها
 خدمات الويب (Web Services) و كيف تنشئها  خدمات الويب (Web Services) و كيف تنشئها
خدمات الويب (Web Services) و كيف تنشئها
 
Opa gatekeeper
Opa gatekeeperOpa gatekeeper
Opa gatekeeper
 
PHP
PHPPHP
PHP
 
FIWARE Context Information Management
FIWARE Context Information ManagementFIWARE Context Information Management
FIWARE Context Information Management
 

Semelhante a How to connect your OSGi application - Dirk Fauth (Bosch)

Microservices with OSGi - D Fauth
Microservices with OSGi - D FauthMicroservices with OSGi - D Fauth
Microservices with OSGi - D Fauthmfrancis
 
Eclipse RCP with Bndtools - P Kirschners & D Fauth
Eclipse RCP with Bndtools - P Kirschners & D FauthEclipse RCP with Bndtools - P Kirschners & D Fauth
Eclipse RCP with Bndtools - P Kirschners & D Fauthmfrancis
 
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzierenPlattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzierenteam-WIBU
 
Von der Dokumentationserstellung zum topic-basierten Content Management bei B...
Von der Dokumentationserstellung zum topic-basierten Content Management bei B...Von der Dokumentationserstellung zum topic-basierten Content Management bei B...
Von der Dokumentationserstellung zum topic-basierten Content Management bei B...Congree Language Technologies GmbH
 
Deutsche Wolke
Deutsche WolkeDeutsche Wolke
Deutsche WolkeThomas Uhl
 
Sbs unternehmenspräsentation v14.3.8
Sbs unternehmenspräsentation v14.3.8Sbs unternehmenspräsentation v14.3.8
Sbs unternehmenspräsentation v14.3.8Joschka Gerrit Bronst
 
WS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche WolkeWS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche WolkeCloudOps Summit
 
Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1DNUG e.V.
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
Hosting Provider Summit Mai 2012
Hosting Provider Summit Mai 2012Hosting Provider Summit Mai 2012
Hosting Provider Summit Mai 2012Thomas Uhl
 
Back to the Frontend – aber nun mit Microservices
Back to the Frontend – aber nun mit MicroservicesBack to the Frontend – aber nun mit Microservices
Back to the Frontend – aber nun mit MicroservicesAndré Fleischer
 
Oracle Mobile Cloud Service im Einsatz
Oracle Mobile Cloud Service im EinsatzOracle Mobile Cloud Service im Einsatz
Oracle Mobile Cloud Service im EinsatzVolker Linz
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Jürg Stuker
 
Li So G Osci
Li So G OsciLi So G Osci
Li So G OsciCloudcamp
 
Die Open eHealth Integration Platform
Die Open eHealth Integration PlatformDie Open eHealth Integration Platform
Die Open eHealth Integration Platformkrasserm
 
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015Manfred Steyer
 
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere PortalFrank Rahn
 
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...NETWAYS
 

Semelhante a How to connect your OSGi application - Dirk Fauth (Bosch) (20)

Microservices with OSGi - D Fauth
Microservices with OSGi - D FauthMicroservices with OSGi - D Fauth
Microservices with OSGi - D Fauth
 
Eclipse RCP with Bndtools - P Kirschners & D Fauth
Eclipse RCP with Bndtools - P Kirschners & D FauthEclipse RCP with Bndtools - P Kirschners & D Fauth
Eclipse RCP with Bndtools - P Kirschners & D Fauth
 
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzierenPlattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
Plattformunabhängige Anwendungen mit Python, PHP und JavaScript lizenzieren
 
Von der Dokumentationserstellung zum topic-basierten Content Management bei B...
Von der Dokumentationserstellung zum topic-basierten Content Management bei B...Von der Dokumentationserstellung zum topic-basierten Content Management bei B...
Von der Dokumentationserstellung zum topic-basierten Content Management bei B...
 
Deutsche Wolke
Deutsche WolkeDeutsche Wolke
Deutsche Wolke
 
Sbs unternehmenspräsentation v14.3.8
Sbs unternehmenspräsentation v14.3.8Sbs unternehmenspräsentation v14.3.8
Sbs unternehmenspräsentation v14.3.8
 
WS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche WolkeWS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche Wolke
 
Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
Hosting Provider Summit Mai 2012
Hosting Provider Summit Mai 2012Hosting Provider Summit Mai 2012
Hosting Provider Summit Mai 2012
 
Back to the Frontend – aber nun mit Microservices
Back to the Frontend – aber nun mit MicroservicesBack to the Frontend – aber nun mit Microservices
Back to the Frontend – aber nun mit Microservices
 
Oracle Mobile Cloud Service im Einsatz
Oracle Mobile Cloud Service im EinsatzOracle Mobile Cloud Service im Einsatz
Oracle Mobile Cloud Service im Einsatz
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
 
Li So G Osci
Li So G OsciLi So G Osci
Li So G Osci
 
Die Open eHealth Integration Platform
Die Open eHealth Integration PlatformDie Open eHealth Integration Platform
Die Open eHealth Integration Platform
 
Industrie 4.0: Symposium an der RFH Köln
Industrie 4.0: Symposium an der RFH KölnIndustrie 4.0: Symposium an der RFH Köln
Industrie 4.0: Symposium an der RFH Köln
 
Webinar: Kollaborative Plattform für den Digitalen Zwilling - SAP Asset Intel...
Webinar: Kollaborative Plattform für den Digitalen Zwilling - SAP Asset Intel...Webinar: Kollaborative Plattform für den Digitalen Zwilling - SAP Asset Intel...
Webinar: Kollaborative Plattform für den Digitalen Zwilling - SAP Asset Intel...
 
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
 
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
20040921 Serviceorientierte Architektur für WebSphere und WebSphere Portal
 
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
OSMC 2023 | IGNITE: Honeypot Flavors: Open-Source Honeypots and their Use in ...
 

Mais de mfrancis

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...mfrancis
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)mfrancis
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)mfrancis
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruumfrancis
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...mfrancis
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...mfrancis
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...mfrancis
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)mfrancis
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...mfrancis
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...mfrancis
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...mfrancis
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)mfrancis
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)mfrancis
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)mfrancis
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...mfrancis
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...mfrancis
 
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...mfrancis
 

Mais de mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
 

How to connect your OSGi application - Dirk Fauth (Bosch)

  • 2. Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 2 How to connect your OSGi application Speaker Dirk Fauth System-Architect Eclipse Committer Robert Bosch GmbH Franz-Oechsle-Straße 4 73207 Plochingen dirk.fauth@de.bosch.com www.bosch.com blog.vogella.com/author/fipro/ Twitter: fipro78
  • 4. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 4 Introduction Application A Application B S S S S Communication Protocol, e.g. JSON via HTTP What does OSGi provide to realize this szenario?
  • 5. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 5 Setup JVM OSGi Framework JSON Converter Servlet Container ??? e.g. Equinox or Felix SCR Felix SCR e.g. Jetty Application / Services e.g. Jackson
  • 6. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 6 Setup - Service public interface StringModifier { String modify(String input); } @Component public class StringInverter implements StringModifier { @Override public String modify(String input) { return new StringBuilder(input).reverse().toString(); } } M(ost) U(seless) S(ervice) E(ver)
  • 8. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 8 HTTP Service / HTTP Whiteboard JVM OSGi Framework JSON Converter Servlet Container HTTP Service / HTTP Whiteboard SCR Application / Services Servlet
  • 9. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 9 HTTP Service / HTTP Whiteboard @Component( service=Servlet.class, property= "osgi.http.whiteboard.servlet.pattern=/modify", scope=ServiceScope.PROTOTYPE) public class ModifierServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Reference private volatile List<StringModifier> modifier; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType(MediaType.APPLICATION_JSON); ObjectMapper objectMapper = new ObjectMapper(); try { String json = objectMapper.writeValueAsString( modifier.stream().map(x -> x.modify(input)).collect(toList())); resp.getWriter().write(json); } catch (JsonProcessingException e) { ... } } } @Component( service=Servlet.class, property= "osgi.http.whiteboard.servlet.pattern=/modify", scope=ServiceScope.PROTOTYPE) public class ModifierServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Reference private volatile List<StringModifier> modifier; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType(MediaType.APPLICATION_JSON); ObjectMapper objectMapper = new ObjectMapper(); try { String json = objectMapper.writeValueAsString( modifier.stream().map(x -> x.modify(input)).collect(toList())); resp.getWriter().write(json); } catch (JsonProcessingException e) { ... } } } @Component( service=Servlet.class, property= "osgi.http.whiteboard.servlet.pattern=/modify", scope=ServiceScope.PROTOTYPE) public class ModifierServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Reference private volatile List<StringModifier> modifier; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType(MediaType.APPLICATION_JSON); ObjectMapper objectMapper = new ObjectMapper(); try { String json = objectMapper.writeValueAsString( modifier.stream().map(x -> x.modify(input)).collect(toList())); resp.getWriter().write(json); } catch (JsonProcessingException e) { ... } } }
  • 10. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 10 HTTP Service / HTTP Whiteboard Service URL: http://localhost:8080/modify?value=Eclipse
  • 11. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 11  Cons  Dependency to Servlet API  Conversion done in the service  Pros  Very simple  Small number of bundles HTTP Service / HTTP Whiteboard
  • 13. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 13 Remote Services Service Producer Remote Service Implementation endpoint created by RSA announced by Discovery Service Consumer endpoint discovered by Discovery proxied by RSA Remote Service Implementation
  • 14. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 15 Remote Services JVM OSGi Framework JSON Converter Servlet Container HTTP Service / HTTP Whiteboard SCR Application / Services Remote Service / RSA
  • 15. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 16 Remote Services @Component(property= { "service.exported.interfaces=*", "service.exported.configs=ecf.generic.server" }) public class StringInverter implements StringModifier { @Override public String modify(String input) { return new StringBuilder(input).reverse().toString(); } }
  • 16. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 17 Remote Services @Path("/modify") @Component( immediate = true, property = { "service.exported.interfaces=*", "service.intents=osgi.async", "service.intents=jaxrs", "osgi.basic.timeout=50000" }) public class ModifierServiceImpl implements ModifierService { @Reference private volatile List<StringModifier> modifier; @GET @Produces(MediaType.APPLICATION_JSON) @Path("/{value}") @Override public List<String> getModifications(@PathParam("value") String value) { return modifier.stream().map(x -> x.modify(value)).collect(Collectors.toList()); } } @Path("/modify") @Component( immediate = true, property = { "service.exported.interfaces=*", "service.intents=osgi.async", "service.intents=jaxrs", "osgi.basic.timeout=50000" }) public class ModifierServiceImpl implements ModifierService { @Reference private volatile List<StringModifier> modifier; @GET @Produces(MediaType.APPLICATION_JSON) @Path("/{value}") @Override public List<String> getModifications(@PathParam("value") String value) { return modifier.stream().map(x -> x.modify(value)).collect(Collectors.toList()); } } @Path("/modify") @Component( immediate = true, property = { "service.exported.interfaces=*", "service.intents=osgi.async", "service.intents=jaxrs", "osgi.basic.timeout=50000" }) public class ModifierServiceImpl implements ModifierService { @Reference private volatile List<StringModifier> modifier; @GET @Produces(MediaType.APPLICATION_JSON) @Path("/{value}") @Override public List<String> getModifications(@PathParam("value") String value) { return modifier.stream().map(x -> x.modify(value)).collect(Collectors.toList()); } }
  • 17. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 14  Various protocols available (e.g. via ECF)  Discovery ‒ Zeroconf/aka Bonjour/Rendevous (JmDNS) ‒ jSLP aka SLP/RFC2608  Distribution Provider ‒ Generic Provider ‒ r-OSGi Provider ‒ Jax-RS Distribution Provider Remote Services
  • 18. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 18 Remote Services Service URL: http://localhost:8080/1/modify/Eclipse
  • 19. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 19  Cons  Complicated bundle composition  High risk with networking issues  Client side is an OSGi application  URL contains dynamic containerID  Pros  Simple definition via component properties  Usage of default JAX-RS annotations  Importing remote services without efforts in programming Remote Services
  • 21. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 21 JAX-RS Whiteboard JVM OSGi Framework JSON Converter Servlet Container HTTP Service / HTTP Whiteboard SCR Application / Services JAX-RS Whiteboard
  • 22. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 22 JAX-RS Whiteboard @Path("/modify") @Produces(MediaType.APPLICATION_JSON) @Component(service=ModifierServiceImpl.class) @JaxrsResource @JSONRequired public class ModifierServiceImpl { @Reference private volatile List<StringModifier> modifier; @GET @Path("/{value}") public List<String> getModifications(@PathParam("value") String value) { return modifier.stream().map(x -> x.modify(value)).collect(toList()); } } @Path("/modify") @Produces(MediaType.APPLICATION_JSON) @Component(service=ModifierServiceImpl.class) @JaxrsResource @JSONRequired public class ModifierServiceImpl { @Reference private volatile List<StringModifier> modifier; @GET @Path("/{value}") public List<String> getModifications(@PathParam("value") String value) { return modifier.stream().map(x -> x.modify(value)).collect(toList()); } }
  • 23. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 23 JAX-RS Whiteboard @Component(scope = PROTOTYPE) @JaxrsExtension @JaxrsMediaType(APPLICATION_JSON) public class JacksonJsonConverter<T> implements MessageBodyReader<T>, MessageBodyWriter<T> { @Reference(service=LoggerFactory.class) private Logger logger; private final Converter converter = Converters.newConverterBuilder() .rule(String.class, this::toJson) .rule(this::toObject) .build(); private ObjectMapper mapper = new ObjectMapper(); ... @Component(scope = PROTOTYPE) @JaxrsExtension @JaxrsMediaType(APPLICATION_JSON) public class JacksonJsonConverter<T> implements MessageBodyReader<T>, MessageBodyWriter<T> { @Reference(service=LoggerFactory.class) private Logger logger; private final Converter converter = Converters.newConverterBuilder() .rule(String.class, this::toJson) .rule(this::toObject) .build(); private ObjectMapper mapper = new ObjectMapper(); ...
  • 24. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 24 JAX-RS Whiteboard Service URL: http://localhost:8080/modify/Eclipse
  • 25. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 26  Cons  Only CXF based reference implementation from Aries available  osgi.contract capabilities not widely integrated yet  Pros  Simple definition via Component Property Types  Usage of default JAX-RS annotations  Easy combination of different OSGi R7 specifications  Runtime requirements resolved via osgi.contract capabilities JAX-RS Whiteboard
  • 27. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 28  OSGi JAX-RS Connector https://github.com/hstaudacher/osgi-jax-rs-connector  Inactive for > 3 years  With R7 actually no use anymore  enRoute https://enroute.osgi.org  Basic guidance for using R7 specifications  Maven based toolchain  Custom communication implementations Alternatives
  • 29. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 30  OSGi Core Release 7 Specification https://osgi.org/specification/osgi.core/7.0.0/  OSGi Compendium Release 7 Specification https://osgi.org/specification/osgi.cmpn/7.0.0/  Eclipse Communication Framework Wiki https://wiki.eclipse.org/Eclipse_Communication_Framework_Project#OS Gi_Remote_Services References
  • 30. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 31  HTTP Service Specification https://osgi.org/specification/osgi.cmpn/7.0.0/service.http.html  HTTP Whiteboard Specification https://osgi.org/specification/osgi.cmpn/7.0.0/service.http.whiteboard.html  Remote Services https://osgi.org/specification/osgi.cmpn/7.0.0/service.remoteservices.html  Remote Service Admin Service Specification https://osgi.org/specification/osgi.cmpn/7.0.0/service.remoteserviceadmin .html  JAX-RS Whiteboard Specification https://osgi.org/specification/osgi.cmpn/7.0.0/service.jaxrs.html References
  • 31. How to connect your OSGi application Automotive Service Solutions | AA-AS/EIS2-EU | 23.10.2018 © Robert Bosch GmbH 2018. Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung, Weitergabe sowie für den Fall von Schutzrechtsanmeldungen. 32  ECF JAX-RS Distribution Provider https://github.com/ECF/JaxRSProviders https://wiki.eclipse.org/Tutorial:_Exposing_a_Jax_REST_service_as_an_ OSGi_Remote_Service  Access OSGi services via web interface http://blog.vogella.com/2017/04/20/access-osgi-services-via-web- interface/  Microservices with OSGi https://www.eclipsecon.org/europe2017/session/microservices-osgi https://www.youtube.com/watch?v=IOusIWAziFE  Example sources https://github.com/fipro78/access_osgi_services References