SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Ching Yi, Chan (qrtt1) OSGi  入門與簡介
WHAT IS OSGi ? The  OSGi™  specifications define a standardized, component-oriented, computing environment for networked services that is the foundation of an enhanced service-oriented architecture. Adding an OSGi Service Platform to a networked device (embedded as well as servers), adds the capability to manage the lifecycle of the software components in the device from anywhere in the network. Software components can be installed, updated, or removed on the fly without ever having to disrupt the operation of the device.
WHAT IS OSGi ? The  OSGi™  specifications define a standardized, component-oriented, computing environment for networked services that is the foundation of an enhanced service-oriented architecture. Adding an OSGi Service Platform to a networked device (embedded as well as servers), adds the capability to manage the lifecycle of the software components in the device from anywhere in the network. Software components can be installed, updated, or removed on the fly without ever having to disrupt the operation of the device.  WHO    CARE ?
WHAT IS OSGi ?
今日焦點 ,[object Object],[object Object],[object Object],[object Object],略懂
OSGi is … ,[object Object]
Service Platform ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OSGi Services Example ,[object Object],[object Object],[object Object],[object Object],[object Object]
Where is Service ? ,[object Object],[object Object],[object Object],[object Object]
Quick Tutorial In Bundle ,[object Object],[object Object],[object Object],[object Object],[object Object]
Hello Bundle Activator & MANIFEST.MF ,[object Object],[object Object],[object Object],[object Object],Make jug.hello bundle with Activator print hello & bye. Run and use start/stop.
Bundle - visibility ,[object Object],[object Object],[object Object],[object Object],[object Object]
Bundle - visibility ,[object Object],[object Object],jug.hello.api
Bundle - visibility ,[object Object],[object Object],B A import  jug.hello.api .HelloWorld; class Foo{ public void hello(){ new HelloWorld().hello(); } } jug.hello.api
Bundle – package propety ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Export-Package: jug.hello.api;version=“1.0.0” Export-Package: jug.hello.api;version=“2.0.0” jug.hello.api.v1 jug.hello.api.v2 jug.hello Import-Package:  jug.hello.api Demo hello.api later 版本高者優先
Export-Package: jug.hello.api;version=“1.0.0” Export-Package: jug.hello.api;version=“2.0.0” jug.hello.api.v1 jug.hello.api.v2 jug.hello Import-Package: jug.hello.api;version=“[1.0.0,1.5.0]” Demo hello.api later 選則偏好的版本
Life Cycle Demo hello.api later INSTALLED RESOLVED UNINSTALLED ACTIVE STOPPING STARTING start stop
Life Cycle ,[object Object],[object Object],[object Object],Demo remote Demo jug.hello.api (change import version)
OSGi Service & URL Shorten Bundle
Service Bundle ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Service Registry ,[object Object],ServiceRegistration  registration ; Properties prop = new Properties(); prop.setProperty("name", "0rz.tw"); registration =   context.registerService ( IShortenURL.class.getName() , new OrzURL(), prop);
Find All Service ,[object Object],ServiceReference[] refs =  context.getServiceReferences ( IShortenURL.class.getName() ,    null );
Service Filter (LDAP Filter) context. getAllServiceReferences ( IShortenURL.class.getName(),  String. format ( "(name=%s)" , name) ); “ (name=0rz.tw)” “ (name=tinyurl)” 過濾含有屬性 name ,且值為  0rz.tw  的  Service 過濾含有屬性 name ,且值為  tinyurl  的  Service
Service Filter (LDAP Filter) 選擇具有  cn  屬性且值為  Babs Jensen  者 "(cn=Babs Jensen)"  以  !  排除具有  cn  屬性且值為  Tim Howes  者 "(!(cn=Tim Howes))"  選擇具有  objectclass  屬性且值為  Persion  並且不含屬性  sn  值  Jensen  與屬性  cn  且值為  Babs J 開頭者 "(&   (" + Constants.OBJECTCLASS + "=Person)   (|(sn=Jensen)(cn=Babs J*)) )"  "(o=univ*of*mich*)"
Service Tracker ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
tracker =  new ServiceTracker(context, IShortenURL.class.getName(), null) { public Object  addingService (ServiceReference reference) { ui.resetAvailableServiceList(context); ui.updateStatus(String.format("Service [%s] is available.",  reference.getProperty("name"))); return super.addingService(reference); } public void  removedService (ServiceReference reference, Object service) { ui.resetAvailableServiceList(context); ui.updateStatus(String.format("Service [%s] is unavailable.",  reference.getProperty("name"))); super.removedService(reference, service); } }; tracker. open ();
Demo Service Gone
Demo Service Back
你需要  OSGi  嗎? ,[object Object],[object Object]
導入  OSGi  的問題 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Manifest-Version: 1.0 Created-By: 1.5.0_12 (Sun Microsystems Inc.) Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt Import-Package: com.thoughtworks.xstream;version="[1.2.2, 2.0.0)";reso lution:=optional,com.thoughtworks.xstream.annotations;version="[1.2.2 , 2.0.0)";resolution:=optional,com.thoughtworks.xstream.converters;ve rsion="[1.2.2, 2.0.0)";resolution:=optional,com.thoughtworks.xstream. io;version="[1.2.2, 2.0.0)";resolution:=optional,com.thoughtworks.xst ream.io.json;version="[1.2.2, 2.0.0)";resolution:=optional,com.though tworks.xstream.io.xml;version="[1.2.2, 2.0.0)";resolution:=optional,j avax.jms;version="[1.1.0, 2.0.0)",javax.management,javax.management.j 2ee.statistics;version="[1.0.1, 2.0.0)",javax.management.openmbean,ja vax.management.remote,javax.naming,javax.naming.directory,javax.namin g.event,javax.naming.spi,javax.net,javax.net.ssl,javax.security.auth, javax.security.auth.callback,javax.security.auth.login,javax.security .auth.spi,javax.sql,javax.transaction;version="[1.0.1, 2.0.0)";resolu tion:=optional,javax.transaction.xa;version="[1.0.1, 2.0.0)";resoluti on:=optional,javax.xml.parsers,org.apache.activeio.journal;version="[ 3.1.0, 4.0.0)";resolution:=optional,org.apache.activeio.journal.activ e;version="[3.1.0, 4.0.0)";resolution:=optional,org.apache.activeio.p acket;version="[3.1.0, 4.0.0)";resolution:=optional,org.apache.camel; version="[1.3.0, 2.0.0)";resolution:=optional,org.apache.camel.compon
導入  OSGi  的問題 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
導入  OSGi  的問題 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
導入  OSGi  的問題 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
導入  OSGi  的問題 ,[object Object],[object Object],[object Object],System.exit(0);
[object Object],[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

Kissy editor开发与设计
Kissy editor开发与设计Kissy editor开发与设计
Kissy editor开发与设计yiming he
 
JCConf2015: groovy to gradle
 JCConf2015: groovy to gradle JCConf2015: groovy to gradle
JCConf2015: groovy to gradleChing Yi Chan
 
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇Justin Lin
 
Spring框架,技术详解及使用指导
Spring框架,技术详解及使用指导Spring框架,技术详解及使用指导
Spring框架,技术详解及使用指导yiditushe
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 GradleJustin Lin
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹Jace Ju
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践yiditushe
 
X Fire开发指南
X Fire开发指南X Fire开发指南
X Fire开发指南yiditushe
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)FLASH开发者交流会
 
Net Parallel Programming .NET平行處理與執行序
Net Parallel Programming .NET平行處理與執行序Net Parallel Programming .NET平行處理與執行序
Net Parallel Programming .NET平行處理與執行序HO-HSUN LIN
 
Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)Chu-Siang Lai
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月鍾誠 陳鍾誠
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用Shengyou Fan
 

Was ist angesagt? (13)

Kissy editor开发与设计
Kissy editor开发与设计Kissy editor开发与设计
Kissy editor开发与设计
 
JCConf2015: groovy to gradle
 JCConf2015: groovy to gradle JCConf2015: groovy to gradle
JCConf2015: groovy to gradle
 
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇
 
Spring框架,技术详解及使用指导
Spring框架,技术详解及使用指导Spring框架,技术详解及使用指导
Spring框架,技术详解及使用指导
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
 
X Fire开发指南
X Fire开发指南X Fire开发指南
X Fire开发指南
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
 
Net Parallel Programming .NET平行處理與執行序
Net Parallel Programming .NET平行處理與執行序Net Parallel Programming .NET平行處理與執行序
Net Parallel Programming .NET平行處理與執行序
 
Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用
 

Ähnlich wie Osgi Intro

Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 
自动化运维管理
自动化运维管理自动化运维管理
自动化运维管理frankwsj
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中Andrew Wu
 
2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aksRoberson Liou
 
Kissy design
Kissy designKissy design
Kissy designyiming he
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027Wei Sun
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇建興 王
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)Wei Sun
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践yiming he
 
Introduction to ngn sce
Introduction to ngn sceIntroduction to ngn sce
Introduction to ngn scegdems
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.toleone
 
Open Api&Sip
Open Api&SipOpen Api&Sip
Open Api&Sipcenwenchu
 
Axis1.4 开发指南 V1.0
Axis1.4 开发指南 V1.0Axis1.4 开发指南 V1.0
Axis1.4 开发指南 V1.0yiditushe
 
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTarget Source
 
KISSY Editor Design 2
KISSY Editor Design 2KISSY Editor Design 2
KISSY Editor Design 2yiming he
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展江華 奚
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程yiditushe
 

Ähnlich wie Osgi Intro (20)

Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 
自动化运维管理
自动化运维管理自动化运维管理
自动化运维管理
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks
 
Kissy design
Kissy designKissy design
Kissy design
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践
 
Introduction to ngn sce
Introduction to ngn sceIntroduction to ngn sce
Introduction to ngn sce
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.t
 
Open Api&Sip
Open Api&SipOpen Api&Sip
Open Api&Sip
 
Axis1.4 开发指南 V1.0
Axis1.4 开发指南 V1.0Axis1.4 开发指南 V1.0
Axis1.4 开发指南 V1.0
 
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering Architecture
 
KISSY Editor Design 2
KISSY Editor Design 2KISSY Editor Design 2
KISSY Editor Design 2
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
 
敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 

Mehr von Ching Yi Chan

JCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineJCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineChing Yi Chan
 
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011Ching Yi Chan
 
using Queue Server for batch processing
using Queue Server for batch processingusing Queue Server for batch processing
using Queue Server for batch processingChing Yi Chan
 
idea: talk about the Active Cache
idea: talk about the Active Cacheidea: talk about the Active Cache
idea: talk about the Active CacheChing Yi Chan
 
Java web programming
Java web programmingJava web programming
Java web programmingChing Yi Chan
 
Android NDK (JUG@TW 2011, Oct.)
Android NDK (JUG@TW 2011, Oct.)Android NDK (JUG@TW 2011, Oct.)
Android NDK (JUG@TW 2011, Oct.)Ching Yi Chan
 

Mehr von Ching Yi Chan (10)

JCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineJCConf2016 Jenkins Pipeline
JCConf2016 Jenkins Pipeline
 
Linking error
Linking errorLinking error
Linking error
 
老舊web上雲端
老舊web上雲端老舊web上雲端
老舊web上雲端
 
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
 
using Queue Server for batch processing
using Queue Server for batch processingusing Queue Server for batch processing
using Queue Server for batch processing
 
idea: talk about the Active Cache
idea: talk about the Active Cacheidea: talk about the Active Cache
idea: talk about the Active Cache
 
Talk about fabric
Talk about fabricTalk about fabric
Talk about fabric
 
Java web programming
Java web programmingJava web programming
Java web programming
 
Android NDK (JUG@TW 2011, Oct.)
Android NDK (JUG@TW 2011, Oct.)Android NDK (JUG@TW 2011, Oct.)
Android NDK (JUG@TW 2011, Oct.)
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 

Kürzlich hochgeladen

10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习PUAXINYEEMoe
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...微信 tytyqqww业务接单
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdfjhujyunjhang
 
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptxbusinesshealthwise
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个michaelell902
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six611002610
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂PUAXINYEEMoe
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdfjhujyunjhang
 
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...微信 tytyqqww业务接单
 

Kürzlich hochgeladen (9)

10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
 
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
 
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
 

Osgi Intro

  • 1. Ching Yi, Chan (qrtt1) OSGi 入門與簡介
  • 2. WHAT IS OSGi ? The OSGi™ specifications define a standardized, component-oriented, computing environment for networked services that is the foundation of an enhanced service-oriented architecture. Adding an OSGi Service Platform to a networked device (embedded as well as servers), adds the capability to manage the lifecycle of the software components in the device from anywhere in the network. Software components can be installed, updated, or removed on the fly without ever having to disrupt the operation of the device.
  • 3. WHAT IS OSGi ? The OSGi™ specifications define a standardized, component-oriented, computing environment for networked services that is the foundation of an enhanced service-oriented architecture. Adding an OSGi Service Platform to a networked device (embedded as well as servers), adds the capability to manage the lifecycle of the software components in the device from anywhere in the network. Software components can be installed, updated, or removed on the fly without ever having to disrupt the operation of the device. WHO CARE ?
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. Export-Package: jug.hello.api;version=“1.0.0” Export-Package: jug.hello.api;version=“2.0.0” jug.hello.api.v1 jug.hello.api.v2 jug.hello Import-Package: jug.hello.api Demo hello.api later 版本高者優先
  • 17. Export-Package: jug.hello.api;version=“1.0.0” Export-Package: jug.hello.api;version=“2.0.0” jug.hello.api.v1 jug.hello.api.v2 jug.hello Import-Package: jug.hello.api;version=“[1.0.0,1.5.0]” Demo hello.api later 選則偏好的版本
  • 18. Life Cycle Demo hello.api later INSTALLED RESOLVED UNINSTALLED ACTIVE STOPPING STARTING start stop
  • 19.
  • 20. OSGi Service & URL Shorten Bundle
  • 21.
  • 22.
  • 23.
  • 24. Service Filter (LDAP Filter) context. getAllServiceReferences ( IShortenURL.class.getName(), String. format ( "(name=%s)" , name) ); “ (name=0rz.tw)” “ (name=tinyurl)” 過濾含有屬性 name ,且值為 0rz.tw 的 Service 過濾含有屬性 name ,且值為 tinyurl 的 Service
  • 25. Service Filter (LDAP Filter) 選擇具有 cn 屬性且值為 Babs Jensen 者 "(cn=Babs Jensen)" 以 ! 排除具有 cn 屬性且值為 Tim Howes 者 "(!(cn=Tim Howes))" 選擇具有 objectclass 屬性且值為 Persion 並且不含屬性 sn 值 Jensen 與屬性 cn 且值為 Babs J 開頭者 "(& (" + Constants.OBJECTCLASS + "=Person) (|(sn=Jensen)(cn=Babs J*)) )" "(o=univ*of*mich*)"
  • 26.
  • 27. tracker = new ServiceTracker(context, IShortenURL.class.getName(), null) { public Object addingService (ServiceReference reference) { ui.resetAvailableServiceList(context); ui.updateStatus(String.format("Service [%s] is available.", reference.getProperty("name"))); return super.addingService(reference); } public void removedService (ServiceReference reference, Object service) { ui.resetAvailableServiceList(context); ui.updateStatus(String.format("Service [%s] is unavailable.", reference.getProperty("name"))); super.removedService(reference, service); } }; tracker. open ();
  • 30.
  • 31.
  • 32. Manifest-Version: 1.0 Created-By: 1.5.0_12 (Sun Microsystems Inc.) Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt Import-Package: com.thoughtworks.xstream;version="[1.2.2, 2.0.0)";reso lution:=optional,com.thoughtworks.xstream.annotations;version="[1.2.2 , 2.0.0)";resolution:=optional,com.thoughtworks.xstream.converters;ve rsion="[1.2.2, 2.0.0)";resolution:=optional,com.thoughtworks.xstream. io;version="[1.2.2, 2.0.0)";resolution:=optional,com.thoughtworks.xst ream.io.json;version="[1.2.2, 2.0.0)";resolution:=optional,com.though tworks.xstream.io.xml;version="[1.2.2, 2.0.0)";resolution:=optional,j avax.jms;version="[1.1.0, 2.0.0)",javax.management,javax.management.j 2ee.statistics;version="[1.0.1, 2.0.0)",javax.management.openmbean,ja vax.management.remote,javax.naming,javax.naming.directory,javax.namin g.event,javax.naming.spi,javax.net,javax.net.ssl,javax.security.auth, javax.security.auth.callback,javax.security.auth.login,javax.security .auth.spi,javax.sql,javax.transaction;version="[1.0.1, 2.0.0)";resolu tion:=optional,javax.transaction.xa;version="[1.0.1, 2.0.0)";resoluti on:=optional,javax.xml.parsers,org.apache.activeio.journal;version="[ 3.1.0, 4.0.0)";resolution:=optional,org.apache.activeio.journal.activ e;version="[3.1.0, 4.0.0)";resolution:=optional,org.apache.activeio.p acket;version="[3.1.0, 4.0.0)";resolution:=optional,org.apache.camel; version="[1.3.0, 2.0.0)";resolution:=optional,org.apache.camel.compon
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.