SlideShare ist ein Scribd-Unternehmen logo
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)

Weitere ähnliche Inhalte

Was ist angesagt?

NiFi 시작하기
NiFi 시작하기NiFi 시작하기
NiFi 시작하기
Byunghwa Yoon
 
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Amazon Web Services
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Amazon Web Services Korea
 
Infrastructure as Code with Terraform and Ansible
Infrastructure as Code with Terraform and AnsibleInfrastructure as Code with Terraform and Ansible
Infrastructure as Code with Terraform and Ansible
DevOps Meetup Bern
 
Comparing IaaS :VMware vs OpenStack vs Google’s Ganeti
Comparing IaaS :VMware vs OpenStack vs Google’s GanetiComparing IaaS :VMware vs OpenStack vs Google’s Ganeti
Comparing IaaS :VMware vs OpenStack vs Google’s Ganeti
GARL
 
InDesign CC 2014でつくるEPUB 3固定レイアウト入門
InDesign CC 2014でつくるEPUB 3固定レイアウト入門InDesign CC 2014でつくるEPUB 3固定レイアウト入門
InDesign CC 2014でつくるEPUB 3固定レイアウト入門
Takashi Oonishi
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
VMware Tanzu Korea
 
Heroku Elevator Pitch Deck/DX Quick Pitch of Heroku to a Customer
Heroku Elevator Pitch Deck/DX Quick Pitch of Heroku to a CustomerHeroku Elevator Pitch Deck/DX Quick Pitch of Heroku to a Customer
Heroku Elevator Pitch Deck/DX Quick Pitch of Heroku to a Customer
Salesforce Partners
 
CIS COMPANY PROFILE
CIS COMPANY PROFILECIS COMPANY PROFILE
CIS COMPANY PROFILE
Harsha T. (Alias Rose R)
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & Introduction
Lee Trout
 
VSICM8_M02.pptx
VSICM8_M02.pptxVSICM8_M02.pptx
VSICM8_M02.pptx
MazharUddin34
 
Zoho Projects Partner Program
Zoho Projects Partner ProgramZoho Projects Partner Program
Zoho Projects Partner Program
Bharath Sriram
 
AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기
AWSKRUG - AWS한국사용자모임
 
DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with Ansible
Swapnil Jain
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
Amazon Web Services Korea
 
Apache Knox Gateway "Single Sign On" expands the reach of the Enterprise Users
Apache Knox Gateway "Single Sign On" expands the reach of the Enterprise UsersApache Knox Gateway "Single Sign On" expands the reach of the Enterprise Users
Apache Knox Gateway "Single Sign On" expands the reach of the Enterprise Users
DataWorks Summit
 
VMware vSphere technical presentation
VMware vSphere technical presentationVMware vSphere technical presentation
VMware vSphere technical presentation
aleyeldean
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
if kakao
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
Arawn Park
 
AEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene IndexesAEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene Indexes
AdobeMarketingCloud
 

Was ist angesagt? (20)

NiFi 시작하기
NiFi 시작하기NiFi 시작하기
NiFi 시작하기
 
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
Infrastructure as Code with Terraform and Ansible
Infrastructure as Code with Terraform and AnsibleInfrastructure as Code with Terraform and Ansible
Infrastructure as Code with Terraform and Ansible
 
Comparing IaaS :VMware vs OpenStack vs Google’s Ganeti
Comparing IaaS :VMware vs OpenStack vs Google’s GanetiComparing IaaS :VMware vs OpenStack vs Google’s Ganeti
Comparing IaaS :VMware vs OpenStack vs Google’s Ganeti
 
InDesign CC 2014でつくるEPUB 3固定レイアウト入門
InDesign CC 2014でつくるEPUB 3固定レイアウト入門InDesign CC 2014でつくるEPUB 3固定レイアウト入門
InDesign CC 2014でつくるEPUB 3固定レイアウト入門
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
 
Heroku Elevator Pitch Deck/DX Quick Pitch of Heroku to a Customer
Heroku Elevator Pitch Deck/DX Quick Pitch of Heroku to a CustomerHeroku Elevator Pitch Deck/DX Quick Pitch of Heroku to a Customer
Heroku Elevator Pitch Deck/DX Quick Pitch of Heroku to a Customer
 
CIS COMPANY PROFILE
CIS COMPANY PROFILECIS COMPANY PROFILE
CIS COMPANY PROFILE
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & Introduction
 
VSICM8_M02.pptx
VSICM8_M02.pptxVSICM8_M02.pptx
VSICM8_M02.pptx
 
Zoho Projects Partner Program
Zoho Projects Partner ProgramZoho Projects Partner Program
Zoho Projects Partner Program
 
AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기
 
DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with Ansible
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
 
Apache Knox Gateway "Single Sign On" expands the reach of the Enterprise Users
Apache Knox Gateway "Single Sign On" expands the reach of the Enterprise UsersApache Knox Gateway "Single Sign On" expands the reach of the Enterprise Users
Apache Knox Gateway "Single Sign On" expands the reach of the Enterprise Users
 
VMware vSphere technical presentation
VMware vSphere technical presentationVMware vSphere technical presentation
VMware vSphere technical presentation
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
 
AEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene IndexesAEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene Indexes
 

Ähnlich wie 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 Fauth
mfrancis
 
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
mfrancis
 
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
team-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 Wolke
Thomas Uhl
 
Sbs unternehmenspräsentation v14.3.8
Sbs unternehmenspräsentation v14.3.8Sbs unternehmenspräsentation v14.3.8
Sbs unternehmenspräsentation v14.3.8
Joschka Gerrit Bronst
 
WS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche WolkeWS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche Wolke
CloudOps 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 1
DNUG 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 Unternehmen
Bjoern 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 Microservices
André Fleischer
 
Oracle Mobile Cloud Service im Einsatz
Oracle Mobile Cloud Service im EinsatzOracle Mobile Cloud Service im Einsatz
Oracle Mobile Cloud Service im Einsatz
Volker Linz
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
Jü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
 
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
Brockhaus Consulting GmbH
 
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...
Trebing & Himstedt Prozeßautomation GmbH & Co. KG
 
Ü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
Manfred 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 Portal
Frank 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
 

Ähnlich wie 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 ...
 

Mehr von 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 Lyaruu
mfrancis
 
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
 

Mehr von 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