狠狠撸

狠狠撸Share a Scribd company logo
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 ?
今日焦點 定義少一點 心情好一點 範例懂一點 知識長一點 略懂
OSGi is … Service Platform
Service Platform 以「服務」「模組」建構系統 適合開發服務導向架構  (SOA) 的平台 您可以使用  OSGi 發佈「服務」 使用「服務」 尋找「服務」
OSGi Services Example 縮短網址的服務 以共通的  interface  發佈服務 允許同時存在不同的實作 可以即時選擇要使用的服務 可以知道服務的狀態
Where is Service ? Service  建構在  Module  層之上 受  Module Life cycle  影響 在  Module  內使用  ServiceRegistry  註冊  Service 那麼, Bundle(App)  就能使用  Service
Quick Tutorial In Bundle OSGi  模組的基本單位 建立  Bundle  的步驟 寫一些類別  ! ? 在  META/MANIFEST.MF  填些什麼? 包成  JAR ! ?
Hello Bundle Activator & MANIFEST.MF Activator/hook method Start Stop MANIFEST.MF Make jug.hello bundle with Activator print hello & bye. Run and use start/stop.
Bundle - visibility 預設的  Bundle  是個黑盒子 完整地保護 無法窺視內部 Reflection Classloader trickery
Bundle - visibility 透過  Export-Package  分享  package Export-Package: jug.hello.api jug.hello.api
Bundle - visibility 透過  Import-Package  使用  package Import-Package: jug.hello.api B A import  jug.hello.api .HelloWorld; class Foo{ public void hello(){ new HelloWorld().hello(); } } jug.hello.api
Bundle – package propety Bundle: jug.hello.api.v1 Export-Package: jug.hello.api; version ="1.0.0" Bundle: jug.hello.api.v2 Export-Package: jug.hello.api; version =“2.0.0"
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 Change System Behavior In Runtime Demo remote Demo jug.hello.api (change import version)
OSGi Service & URL Shorten Bundle
Service Bundle shorten.api 僅提供  interface shorten.client Swing UI  使用者互動介面 shorten.orz 0rz.tw  短址服服
Service Registry BundleContext. registerService() ServiceRegistration  registration ; Properties prop = new Properties(); prop.setProperty("name", "0rz.tw"); registration =   context.registerService ( IShortenURL.class.getName() , new OrzURL(), prop);
Find All Service BundleContext. getServiceReferences () 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 Monitor Service come and go ServiceTracker addingService() 當  Service  被發佈時觸發 removedService() 當  Service  被終止時觸發
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  嗎? 你的系統需要執行期改變行為嗎? 你的系統提供的服務經常變動嗎?
導入  OSGi  的問題 沿用  META/MANIFEST.MF, BUT … 「手工」撰寫  MANIFEST.MF  是自虐。 有單行長度限制 最後一行需要空行 Metadata  需要填的內容可能很多 Import-Package Export-Package …
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  的問題 Bundle ClassLoader  真麻煩  !? 我想要把舊的專案搬到  OSGi  上? 這是可行的 但是,所有使用到的  Library  都必需轉成  Bundle  並且設  Export-Package 然後,你會開始抱怨。 OSGi Sucks. Daxx it. OSGi.
導入  OSGi  的問題 JARs  ?  Bundles 使用到的  Library  都已經轉成  OSGi Bundle  了嗎? http:// www.springsource.com /repository/app 可能將它們的轉成  OSGi Bundle  嗎? http://aqute.biz/Code/Bnd http://wiki.ops4j.org/confluence/display/ops4j/Pax 能否單純以  JAR  的型式使用 Bundle-ClassPath Bundle-ClassPath + Fa?ade Pattern  ?  OSGi Service
導入  OSGi  的問題 問題在設計 以  Fa?ade Pattern  隔離底層不需共用的  JARs  管理  Bundle Dependency ,管制共用的  Bundle org.apache.commons.* Spring 採介面 / 實作分離的設計,以  Service  建構系統。
導入  OSGi  的問題 OSGi Run many app in single vm 需要禁止任何終止  VM  活動的程式 使用  SecurityManager ( 啟動  Security Layer  防護功能 ) System.exit(0);
Thank You. Q  &  A

More Related Content

What's hot (13)

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 gradle
Ching Yi Chan
?
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇
Justin Lin
?
厂辫谤颈苍驳框架,技术详解及使用指导
厂辫谤颈苍驳框架,技术详解及使用指导厂辫谤颈苍驳框架,技术详解及使用指导
厂辫谤颈苍驳框架,技术详解及使用指导
yiditushe
?
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
Justin Lin
?
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹
Jace Ju
?
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
?
X Fire开发指南
X Fire开发指南X Fire开发指南
X Fire开发指南
yiditushe
?
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年五月
鍾誠 陳鍾誠
?
笔补肠办补驳别安装与使用
笔补肠办补驳别安装与使用笔补肠办补驳别安装与使用
笔补肠办补驳别安装与使用
Shengyou Fan
?
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 gradle
Ching Yi Chan
?
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇
Justin Lin
?
厂辫谤颈苍驳框架,技术详解及使用指导
厂辫谤颈苍驳框架,技术详解及使用指导厂辫谤颈苍驳框架,技术详解及使用指导
厂辫谤颈苍驳框架,技术详解及使用指导
yiditushe
?
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
Justin Lin
?
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹
Jace Ju
?
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
?
X Fire开发指南
X Fire开发指南X Fire开发指南
X Fire开发指南
yiditushe
?
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年五月
鍾誠 陳鍾誠
?
笔补肠办补驳别安装与使用
笔补肠办补驳别安装与使用笔补肠办补驳别安装与使用
笔补肠办补驳别安装与使用
Shengyou Fan
?

Similar to Osgi Intro (20)

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-aks
Roberson Liou
?
Kissy design
Kissy designKissy design
Kissy design
yiming he
?
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
Wei Sun
?
在云端上啜饮爪哇
在云端上啜饮爪哇在云端上啜饮爪哇
在云端上啜饮爪哇
建興 王
?
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
Wei Sun
?
碍颈蝉蝉测模块化实践
碍颈蝉蝉测模块化实践碍颈蝉蝉测模块化实践
碍颈蝉蝉测模块化实践
yiming he
?
Introduction to ngn sce
Introduction to ngn sceIntroduction to ngn sce
Introduction to ngn sce
gdems
?
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.t
oleone
?
Open Api&Sip
Open Api&SipOpen Api&Sip
Open Api&Sip
cenwenchu
?
Axis1.4 开发指南 V1.0
Axis1.4 开发指南 V1.0Axis1.4 开发指南 V1.0
Axis1.4 开发指南 V1.0
yiditushe
?
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering Architecture
Target Source
?
KISSY Editor Design 2
KISSY Editor Design 2KISSY Editor Design 2
KISSY Editor Design 2
yiming he
?
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
江華 奚
?
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
yiditushe
?
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-aks
Roberson Liou
?
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
Wei Sun
?
在云端上啜饮爪哇
在云端上啜饮爪哇在云端上啜饮爪哇
在云端上啜饮爪哇
建興 王
?
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
Wei Sun
?
碍颈蝉蝉测模块化实践
碍颈蝉蝉测模块化实践碍颈蝉蝉测模块化实践
碍颈蝉蝉测模块化实践
yiming he
?
Introduction to ngn sce
Introduction to ngn sceIntroduction to ngn sce
Introduction to ngn sce
gdems
?
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.t
oleone
?
Axis1.4 开发指南 V1.0
Axis1.4 开发指南 V1.0Axis1.4 开发指南 V1.0
Axis1.4 开发指南 V1.0
yiditushe
?
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering Architecture
Target Source
?
KISSY Editor Design 2
KISSY Editor Design 2KISSY Editor Design 2
KISSY Editor Design 2
yiming he
?
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
江華 奚
?
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
厂迟谤耻迟蝉+厂辫谤颈苍驳+贬颈产别谤苍补迟别整合教程
yiditushe
?

More from Ching Yi Chan (10)

JCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineJCConf2016 Jenkins Pipeline
JCConf2016 Jenkins Pipeline
Ching Yi Chan
?
Linking error
Linking errorLinking error
Linking error
Ching Yi Chan
?
老旧飞别产上云端
老旧飞别产上云端老旧飞别产上云端
老旧飞别产上云端
Ching Yi Chan
?
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
Ching Yi Chan
?
using Queue Server for batch processing
using Queue Server for batch processingusing Queue Server for batch processing
using Queue Server for batch processing
Ching Yi Chan
?
idea: talk about the Active Cache
idea: talk about the Active Cacheidea: talk about the Active Cache
idea: talk about the Active Cache
Ching Yi Chan
?
Talk about fabric
Talk about fabricTalk about fabric
Talk about fabric
Ching Yi Chan
?
Java web programming
Java web programmingJava web programming
Java web programming
Ching 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
?
Unit Testing
Unit TestingUnit Testing
Unit Testing
Ching Yi Chan
?
JCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineJCConf2016 Jenkins Pipeline
JCConf2016 Jenkins Pipeline
Ching Yi Chan
?
老旧飞别产上云端
老旧飞别产上云端老旧飞别产上云端
老旧飞别产上云端
Ching Yi Chan
?
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
Ching Yi Chan
?
using Queue Server for batch processing
using Queue Server for batch processingusing Queue Server for batch processing
using Queue Server for batch processing
Ching Yi Chan
?
idea: talk about the Active Cache
idea: talk about the Active Cacheidea: talk about the Active Cache
idea: talk about the Active Cache
Ching 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
?

Recently uploaded (18)

黑客改成绩快速安全?!【微Hackr404信】黑客入侵教务系统修改成绩 - 找黑客改成绩 - 黑客改分 - 找黑客修改成绩 - 黑客改成绩...
黑客改成绩快速安全?!【微Hackr404信】黑客入侵教务系统修改成绩   - 找黑客改成绩   - 黑客改分   - 找黑客修改成绩   - 黑客改成绩...黑客改成绩快速安全?!【微Hackr404信】黑客入侵教务系统修改成绩   - 找黑客改成绩   - 黑客改分   - 找黑客修改成绩   - 黑客改成绩...
黑客改成绩快速安全?!【微Hackr404信】黑客入侵教务系统修改成绩 - 找黑客改成绩 - 黑客改分 - 找黑客修改成绩 - 黑客改成绩...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
黑客技术修改内华达大学成绩,【微贬补肠办谤404信】黑客改成绩服务,黑客快速修改亚利桑那大学成绩,黑客技术修改新墨西哥州立大学成绩,黑客改成绩团队,黑客快...
黑客技术修改内华达大学成绩,【微贬补肠办谤404信】黑客改成绩服务,黑客快速修改亚利桑那大学成绩,黑客技术修改新墨西哥州立大学成绩,黑客改成绩团队,黑客快...黑客技术修改内华达大学成绩,【微贬补肠办谤404信】黑客改成绩服务,黑客快速修改亚利桑那大学成绩,黑客技术修改新墨西哥州立大学成绩,黑客改成绩团队,黑客快...
黑客技术修改内华达大学成绩,【微贬补肠办谤404信】黑客改成绩服务,黑客快速修改亚利桑那大学成绩,黑客技术修改新墨西哥州立大学成绩,黑客改成绩团队,黑客快...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
2 风中的树苗 :理解与深究(加入第1至第4题)semakan kssr Bahasa cina tahun 1
2 风中的树苗 :理解与深究(加入第1至第4题)semakan kssr Bahasa cina tahun 12 风中的树苗 :理解与深究(加入第1至第4题)semakan kssr Bahasa cina tahun 1
2 风中的树苗 :理解与深究(加入第1至第4题)semakan kssr Bahasa cina tahun 1
g62042289
?
顿顿辞厂攻击服务,网站瘫痪服务,恶意软件定制【微信贬补肠办谤404】开发病毒服务,勒索软件开发,黑客入侵大学网站修改成绩,黑客删除论坛文章
顿顿辞厂攻击服务,网站瘫痪服务,恶意软件定制【微信贬补肠办谤404】开发病毒服务,勒索软件开发,黑客入侵大学网站修改成绩,黑客删除论坛文章顿顿辞厂攻击服务,网站瘫痪服务,恶意软件定制【微信贬补肠办谤404】开发病毒服务,勒索软件开发,黑客入侵大学网站修改成绩,黑客删除论坛文章
顿顿辞厂攻击服务,网站瘫痪服务,恶意软件定制【微信贬补肠办谤404】开发病毒服务,勒索软件开发,黑客入侵大学网站修改成绩,黑客删除论坛文章
【微信VQiChen】澳洲改成绩,澳洲改分,澳大利亚改成绩黑客如何入侵大学网站改成绩的?成绩修改 韩国中学成绩修改 日本中学成绩修改 泰国中学成绩修改美国大学挂科改成绩 英国大学挂科改成绩
?
滨黑客改成绩的背后:技术炫耀还是经济利益驱动?【微贬补肠办谤404信】教育系统网络安全漏洞:黑客改成绩事件频发的根源
滨黑客改成绩的背后:技术炫耀还是经济利益驱动?【微贬补肠办谤404信】教育系统网络安全漏洞:黑客改成绩事件频发的根源滨黑客改成绩的背后:技术炫耀还是经济利益驱动?【微贬补肠办谤404信】教育系统网络安全漏洞:黑客改成绩事件频发的根源
滨黑客改成绩的背后:技术炫耀还是经济利益驱动?【微贬补肠办谤404信】教育系统网络安全漏洞:黑客改成绩事件频发的根源
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
黑客改成绩方法,【微贬补肠办谤404信】黑客快速修改爱达荷大学成绩,黑客技术修改北达科他大学成绩,黑客改成绩流程,黑客快速修改南达科他大学成绩,黑客技术修...
黑客改成绩方法,【微贬补肠办谤404信】黑客快速修改爱达荷大学成绩,黑客技术修改北达科他大学成绩,黑客改成绩流程,黑客快速修改南达科他大学成绩,黑客技术修...黑客改成绩方法,【微贬补肠办谤404信】黑客快速修改爱达荷大学成绩,黑客技术修改北达科他大学成绩,黑客改成绩流程,黑客快速修改南达科他大学成绩,黑客技术修...
黑客改成绩方法,【微贬补肠办谤404信】黑客快速修改爱达荷大学成绩,黑客技术修改北达科他大学成绩,黑客改成绩流程,黑客快速修改南达科他大学成绩,黑客技术修...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
职场霸凌防治及处理案例-动物医院训练教材-詹翔霖副教授「「云云」凶杀命案」.诲辞肠虫
职场霸凌防治及处理案例-动物医院训练教材-詹翔霖副教授「「云云」凶杀命案」.诲辞肠虫职场霸凌防治及处理案例-动物医院训练教材-詹翔霖副教授「「云云」凶杀命案」.诲辞肠虫
职场霸凌防治及处理案例-动物医院训练教材-詹翔霖副教授「「云云」凶杀命案」.诲辞肠虫
https://mypaper.pchome.com.tw/chanrs/post/1381109792
?
黑客改成绩:如何通过DNS劫持绕过安全防护? 【微Hackr404信】 从域名解析到流量重定向,揭秘黑客的DNS劫持技术
黑客改成绩:如何通过DNS劫持绕过安全防护?   【微Hackr404信】 从域名解析到流量重定向,揭秘黑客的DNS劫持技术黑客改成绩:如何通过DNS劫持绕过安全防护?   【微Hackr404信】 从域名解析到流量重定向,揭秘黑客的DNS劫持技术
黑客改成绩:如何通过DNS劫持绕过安全防护? 【微Hackr404信】 从域名解析到流量重定向,揭秘黑客的DNS劫持技术
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
黑客改成绩:入侵技术与痕迹清理的深度解析【微贬补肠办谤404信】漏洞利用,权限提升,数据库修改,痕迹清理,隐匿技术
黑客改成绩:入侵技术与痕迹清理的深度解析【微贬补肠办谤404信】漏洞利用,权限提升,数据库修改,痕迹清理,隐匿技术黑客改成绩:入侵技术与痕迹清理的深度解析【微贬补肠办谤404信】漏洞利用,权限提升,数据库修改,痕迹清理,隐匿技术
黑客改成绩:入侵技术与痕迹清理的深度解析【微贬补肠办谤404信】漏洞利用,权限提升,数据库修改,痕迹清理,隐匿技术
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
黑客改成绩服务,黑客快速修改麻省理工成绩【微贬补肠办谤404信】黑客技术修改牛津大学成绩,黑客改成绩团队,黑客快速修改剑桥大学成绩,黑客技术修改加州理工成...
黑客改成绩服务,黑客快速修改麻省理工成绩【微贬补肠办谤404信】黑客技术修改牛津大学成绩,黑客改成绩团队,黑客快速修改剑桥大学成绩,黑客技术修改加州理工成...黑客改成绩服务,黑客快速修改麻省理工成绩【微贬补肠办谤404信】黑客技术修改牛津大学成绩,黑客改成绩团队,黑客快速修改剑桥大学成绩,黑客技术修改加州理工成...
黑客改成绩服务,黑客快速修改麻省理工成绩【微贬补肠办谤404信】黑客技术修改牛津大学成绩,黑客改成绩团队,黑客快速修改剑桥大学成绩,黑客技术修改加州理工成...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
职场霸凌与公司责任:打造健康友善的工作环境-动物医事助理训练教材-詹翔霖副教授教材图档.诲辞肠虫
职场霸凌与公司责任:打造健康友善的工作环境-动物医事助理训练教材-詹翔霖副教授教材图档.诲辞肠虫职场霸凌与公司责任:打造健康友善的工作环境-动物医事助理训练教材-詹翔霖副教授教材图档.诲辞肠虫
职场霸凌与公司责任:打造健康友善的工作环境-动物医事助理训练教材-詹翔霖副教授教材图档.诲辞肠虫
https://mypaper.pchome.com.tw/chanrs/post/1381109792
?
佐治亚理工学院代考服务详解【微信贬补肠办谤404】佛罗里达州立大学代考,乔治亚大学替考,田纳西州立大学代考,肯塔基州立大学保分替考,阿拉巴马州立大学代考,...
佐治亚理工学院代考服务详解【微信贬补肠办谤404】佛罗里达州立大学代考,乔治亚大学替考,田纳西州立大学代考,肯塔基州立大学保分替考,阿拉巴马州立大学代考,...佐治亚理工学院代考服务详解【微信贬补肠办谤404】佛罗里达州立大学代考,乔治亚大学替考,田纳西州立大学代考,肯塔基州立大学保分替考,阿拉巴马州立大学代考,...
佐治亚理工学院代考服务详解【微信贬补肠办谤404】佛罗里达州立大学代考,乔治亚大学替考,田纳西州立大学代考,肯塔基州立大学保分替考,阿拉巴马州立大学代考,...
【微信VQiChen】澳洲改成绩,澳洲改分,澳大利亚改成绩黑客如何入侵大学网站改成绩的?成绩修改 韩国中学成绩修改 日本中学成绩修改 泰国中学成绩修改美国大学挂科改成绩 英国大学挂科改成绩
?
国外学历代办,教育部学历认证,留学认证服务【微贬补肠办谤404信】办理英国学历,美国学历,法国学历,德国学历认证
国外学历代办,教育部学历认证,留学认证服务【微贬补肠办谤404信】办理英国学历,美国学历,法国学历,德国学历认证国外学历代办,教育部学历认证,留学认证服务【微贬补肠办谤404信】办理英国学历,美国学历,法国学历,德国学历认证
国外学历代办,教育部学历认证,留学认证服务【微贬补肠办谤404信】办理英国学历,美国学历,法国学历,德国学历认证
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
成绩篡改、SQL注入、日志清理、数据库安全、日志监控 【微Hackr404信】黑客入侵、修改成绩、漏洞扫描、社会工程学、网络安全防护
成绩篡改、SQL注入、日志清理、数据库安全、日志监控  【微Hackr404信】黑客入侵、修改成绩、漏洞扫描、社会工程学、网络安全防护成绩篡改、SQL注入、日志清理、数据库安全、日志监控  【微Hackr404信】黑客入侵、修改成绩、漏洞扫描、社会工程学、网络安全防护
成绩篡改、SQL注入、日志清理、数据库安全、日志监控 【微Hackr404信】黑客入侵、修改成绩、漏洞扫描、社会工程学、网络安全防护
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
bb8c5c4e-d1de-496f-ab1a-49e8f9c64a1a.pptx
bb8c5c4e-d1de-496f-ab1a-49e8f9c64a1a.pptxbb8c5c4e-d1de-496f-ab1a-49e8f9c64a1a.pptx
bb8c5c4e-d1de-496f-ab1a-49e8f9c64a1a.pptx
ronalyncaju
?
O-level Mathematics代考,【微信VQiChen】GCSE Mathematics替考,UCAT Quantitative Reasoni...
O-level Mathematics代考,【微信VQiChen】GCSE Mathematics替考,UCAT Quantitative Reasoni...O-level Mathematics代考,【微信VQiChen】GCSE Mathematics替考,UCAT Quantitative Reasoni...
O-level Mathematics代考,【微信VQiChen】GCSE Mathematics替考,UCAT Quantitative Reasoni...
【微信VQiChen】澳洲改成绩,澳洲改分,澳大利亚改成绩黑客如何入侵大学网站改成绩的?成绩修改 韩国中学成绩修改 日本中学成绩修改 泰国中学成绩修改美国大学挂科改成绩 英国大学挂科改成绩
?
尝厂础罢考试代考方案,础笔考试替考攻略【微贬补肠办谤404信】,滨叠考试代考教程,罢翱贰滨颁考试保分替考案例,笔罢贰考试代考经验,雅思考试代考技巧,托福考...
尝厂础罢考试代考方案,础笔考试替考攻略【微贬补肠办谤404信】,滨叠考试代考教程,罢翱贰滨颁考试保分替考案例,笔罢贰考试代考经验,雅思考试代考技巧,托福考...尝厂础罢考试代考方案,础笔考试替考攻略【微贬补肠办谤404信】,滨叠考试代考教程,罢翱贰滨颁考试保分替考案例,笔罢贰考试代考经验,雅思考试代考技巧,托福考...
尝厂础罢考试代考方案,础笔考试替考攻略【微贬补肠办谤404信】,滨叠考试代考教程,罢翱贰滨颁考试保分替考案例,笔罢贰考试代考经验,雅思考试代考技巧,托福考...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
础颁罢考试代考,础笔考试替考,滨叠考试代考【微信贬补肠办谤404】,础-濒别惫别濒考试替考,翱-濒别惫别濒考试代考,滨骋颁厂贰考试代考,鲍颁础罢考试替考,...
础颁罢考试代考,础笔考试替考,滨叠考试代考【微信贬补肠办谤404】,础-濒别惫别濒考试替考,翱-濒别惫别濒考试代考,滨骋颁厂贰考试代考,鲍颁础罢考试替考,...础颁罢考试代考,础笔考试替考,滨叠考试代考【微信贬补肠办谤404】,础-濒别惫别濒考试替考,翱-濒别惫别濒考试代考,滨骋颁厂贰考试代考,鲍颁础罢考试替考,...
础颁罢考试代考,础笔考试替考,滨叠考试代考【微信贬补肠办谤404】,础-濒别惫别濒考试替考,翱-濒别惫别濒考试代考,滨骋颁厂贰考试代考,鲍颁础罢考试替考,...
【微信VQiChen】澳洲改成绩,澳洲改分,澳大利亚改成绩黑客如何入侵大学网站改成绩的?成绩修改 韩国中学成绩修改 日本中学成绩修改 泰国中学成绩修改美国大学挂科改成绩 英国大学挂科改成绩
?
黑客改成绩快速安全?!【微Hackr404信】黑客入侵教务系统修改成绩 - 找黑客改成绩 - 黑客改分 - 找黑客修改成绩 - 黑客改成绩...
黑客改成绩快速安全?!【微Hackr404信】黑客入侵教务系统修改成绩   - 找黑客改成绩   - 黑客改分   - 找黑客修改成绩   - 黑客改成绩...黑客改成绩快速安全?!【微Hackr404信】黑客入侵教务系统修改成绩   - 找黑客改成绩   - 黑客改分   - 找黑客修改成绩   - 黑客改成绩...
黑客改成绩快速安全?!【微Hackr404信】黑客入侵教务系统修改成绩 - 找黑客改成绩 - 黑客改分 - 找黑客修改成绩 - 黑客改成绩...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
黑客技术修改内华达大学成绩,【微贬补肠办谤404信】黑客改成绩服务,黑客快速修改亚利桑那大学成绩,黑客技术修改新墨西哥州立大学成绩,黑客改成绩团队,黑客快...
黑客技术修改内华达大学成绩,【微贬补肠办谤404信】黑客改成绩服务,黑客快速修改亚利桑那大学成绩,黑客技术修改新墨西哥州立大学成绩,黑客改成绩团队,黑客快...黑客技术修改内华达大学成绩,【微贬补肠办谤404信】黑客改成绩服务,黑客快速修改亚利桑那大学成绩,黑客技术修改新墨西哥州立大学成绩,黑客改成绩团队,黑客快...
黑客技术修改内华达大学成绩,【微贬补肠办谤404信】黑客改成绩服务,黑客快速修改亚利桑那大学成绩,黑客技术修改新墨西哥州立大学成绩,黑客改成绩团队,黑客快...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
2 风中的树苗 :理解与深究(加入第1至第4题)semakan kssr Bahasa cina tahun 1
2 风中的树苗 :理解与深究(加入第1至第4题)semakan kssr Bahasa cina tahun 12 风中的树苗 :理解与深究(加入第1至第4题)semakan kssr Bahasa cina tahun 1
2 风中的树苗 :理解与深究(加入第1至第4题)semakan kssr Bahasa cina tahun 1
g62042289
?
滨黑客改成绩的背后:技术炫耀还是经济利益驱动?【微贬补肠办谤404信】教育系统网络安全漏洞:黑客改成绩事件频发的根源
滨黑客改成绩的背后:技术炫耀还是经济利益驱动?【微贬补肠办谤404信】教育系统网络安全漏洞:黑客改成绩事件频发的根源滨黑客改成绩的背后:技术炫耀还是经济利益驱动?【微贬补肠办谤404信】教育系统网络安全漏洞:黑客改成绩事件频发的根源
滨黑客改成绩的背后:技术炫耀还是经济利益驱动?【微贬补肠办谤404信】教育系统网络安全漏洞:黑客改成绩事件频发的根源
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
黑客改成绩方法,【微贬补肠办谤404信】黑客快速修改爱达荷大学成绩,黑客技术修改北达科他大学成绩,黑客改成绩流程,黑客快速修改南达科他大学成绩,黑客技术修...
黑客改成绩方法,【微贬补肠办谤404信】黑客快速修改爱达荷大学成绩,黑客技术修改北达科他大学成绩,黑客改成绩流程,黑客快速修改南达科他大学成绩,黑客技术修...黑客改成绩方法,【微贬补肠办谤404信】黑客快速修改爱达荷大学成绩,黑客技术修改北达科他大学成绩,黑客改成绩流程,黑客快速修改南达科他大学成绩,黑客技术修...
黑客改成绩方法,【微贬补肠办谤404信】黑客快速修改爱达荷大学成绩,黑客技术修改北达科他大学成绩,黑客改成绩流程,黑客快速修改南达科他大学成绩,黑客技术修...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
职场霸凌防治及处理案例-动物医院训练教材-詹翔霖副教授「「云云」凶杀命案」.诲辞肠虫
职场霸凌防治及处理案例-动物医院训练教材-詹翔霖副教授「「云云」凶杀命案」.诲辞肠虫职场霸凌防治及处理案例-动物医院训练教材-詹翔霖副教授「「云云」凶杀命案」.诲辞肠虫
职场霸凌防治及处理案例-动物医院训练教材-詹翔霖副教授「「云云」凶杀命案」.诲辞肠虫
https://mypaper.pchome.com.tw/chanrs/post/1381109792
?
黑客改成绩:如何通过DNS劫持绕过安全防护? 【微Hackr404信】 从域名解析到流量重定向,揭秘黑客的DNS劫持技术
黑客改成绩:如何通过DNS劫持绕过安全防护?   【微Hackr404信】 从域名解析到流量重定向,揭秘黑客的DNS劫持技术黑客改成绩:如何通过DNS劫持绕过安全防护?   【微Hackr404信】 从域名解析到流量重定向,揭秘黑客的DNS劫持技术
黑客改成绩:如何通过DNS劫持绕过安全防护? 【微Hackr404信】 从域名解析到流量重定向,揭秘黑客的DNS劫持技术
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
黑客改成绩:入侵技术与痕迹清理的深度解析【微贬补肠办谤404信】漏洞利用,权限提升,数据库修改,痕迹清理,隐匿技术
黑客改成绩:入侵技术与痕迹清理的深度解析【微贬补肠办谤404信】漏洞利用,权限提升,数据库修改,痕迹清理,隐匿技术黑客改成绩:入侵技术与痕迹清理的深度解析【微贬补肠办谤404信】漏洞利用,权限提升,数据库修改,痕迹清理,隐匿技术
黑客改成绩:入侵技术与痕迹清理的深度解析【微贬补肠办谤404信】漏洞利用,权限提升,数据库修改,痕迹清理,隐匿技术
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
黑客改成绩服务,黑客快速修改麻省理工成绩【微贬补肠办谤404信】黑客技术修改牛津大学成绩,黑客改成绩团队,黑客快速修改剑桥大学成绩,黑客技术修改加州理工成...
黑客改成绩服务,黑客快速修改麻省理工成绩【微贬补肠办谤404信】黑客技术修改牛津大学成绩,黑客改成绩团队,黑客快速修改剑桥大学成绩,黑客技术修改加州理工成...黑客改成绩服务,黑客快速修改麻省理工成绩【微贬补肠办谤404信】黑客技术修改牛津大学成绩,黑客改成绩团队,黑客快速修改剑桥大学成绩,黑客技术修改加州理工成...
黑客改成绩服务,黑客快速修改麻省理工成绩【微贬补肠办谤404信】黑客技术修改牛津大学成绩,黑客改成绩团队,黑客快速修改剑桥大学成绩,黑客技术修改加州理工成...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
职场霸凌与公司责任:打造健康友善的工作环境-动物医事助理训练教材-詹翔霖副教授教材图档.诲辞肠虫
职场霸凌与公司责任:打造健康友善的工作环境-动物医事助理训练教材-詹翔霖副教授教材图档.诲辞肠虫职场霸凌与公司责任:打造健康友善的工作环境-动物医事助理训练教材-詹翔霖副教授教材图档.诲辞肠虫
职场霸凌与公司责任:打造健康友善的工作环境-动物医事助理训练教材-詹翔霖副教授教材图档.诲辞肠虫
https://mypaper.pchome.com.tw/chanrs/post/1381109792
?
国外学历代办,教育部学历认证,留学认证服务【微贬补肠办谤404信】办理英国学历,美国学历,法国学历,德国学历认证
国外学历代办,教育部学历认证,留学认证服务【微贬补肠办谤404信】办理英国学历,美国学历,法国学历,德国学历认证国外学历代办,教育部学历认证,留学认证服务【微贬补肠办谤404信】办理英国学历,美国学历,法国学历,德国学历认证
国外学历代办,教育部学历认证,留学认证服务【微贬补肠办谤404信】办理英国学历,美国学历,法国学历,德国学历认证
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
成绩篡改、SQL注入、日志清理、数据库安全、日志监控 【微Hackr404信】黑客入侵、修改成绩、漏洞扫描、社会工程学、网络安全防护
成绩篡改、SQL注入、日志清理、数据库安全、日志监控  【微Hackr404信】黑客入侵、修改成绩、漏洞扫描、社会工程学、网络安全防护成绩篡改、SQL注入、日志清理、数据库安全、日志监控  【微Hackr404信】黑客入侵、修改成绩、漏洞扫描、社会工程学、网络安全防护
成绩篡改、SQL注入、日志清理、数据库安全、日志监控 【微Hackr404信】黑客入侵、修改成绩、漏洞扫描、社会工程学、网络安全防护
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?
bb8c5c4e-d1de-496f-ab1a-49e8f9c64a1a.pptx
bb8c5c4e-d1de-496f-ab1a-49e8f9c64a1a.pptxbb8c5c4e-d1de-496f-ab1a-49e8f9c64a1a.pptx
bb8c5c4e-d1de-496f-ab1a-49e8f9c64a1a.pptx
ronalyncaju
?
尝厂础罢考试代考方案,础笔考试替考攻略【微贬补肠办谤404信】,滨叠考试代考教程,罢翱贰滨颁考试保分替考案例,笔罢贰考试代考经验,雅思考试代考技巧,托福考...
尝厂础罢考试代考方案,础笔考试替考攻略【微贬补肠办谤404信】,滨叠考试代考教程,罢翱贰滨颁考试保分替考案例,笔罢贰考试代考经验,雅思考试代考技巧,托福考...尝厂础罢考试代考方案,础笔考试替考攻略【微贬补肠办谤404信】,滨叠考试代考教程,罢翱贰滨颁考试保分替考案例,笔罢贰考试代考经验,雅思考试代考技巧,托福考...
尝厂础罢考试代考方案,础笔考试替考攻略【微贬补肠办谤404信】,滨叠考试代考教程,罢翱贰滨颁考试保分替考案例,笔罢贰考试代考经验,雅思考试代考技巧,托福考...
【微痴辩颈颁丑别苍信】诲补颈办补辞8.肠辞尘
?

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. OSGi is … Service Platform
  • 7. Service Platform 以「服務」「模組」建構系統 適合開發服務導向架構 (SOA) 的平台 您可以使用 OSGi 發佈「服務」 使用「服務」 尋找「服務」
  • 8. OSGi Services Example 縮短網址的服務 以共通的 interface 發佈服務 允許同時存在不同的實作 可以即時選擇要使用的服務 可以知道服務的狀態
  • 9. Where is Service ? Service 建構在 Module 層之上 受 Module Life cycle 影響 在 Module 內使用 ServiceRegistry 註冊 Service 那麼, Bundle(App) 就能使用 Service
  • 10. Quick Tutorial In Bundle OSGi 模組的基本單位 建立 Bundle 的步驟 寫一些類別 ! ? 在 META/MANIFEST.MF 填些什麼? 包成 JAR ! ?
  • 11. Hello Bundle Activator & MANIFEST.MF Activator/hook method Start Stop MANIFEST.MF Make jug.hello bundle with Activator print hello & bye. Run and use start/stop.
  • 12. Bundle - visibility 預設的 Bundle 是個黑盒子 完整地保護 無法窺視內部 Reflection Classloader trickery
  • 13. Bundle - visibility 透過 Export-Package 分享 package Export-Package: jug.hello.api jug.hello.api
  • 14. Bundle - visibility 透過 Import-Package 使用 package Import-Package: jug.hello.api B A import jug.hello.api .HelloWorld; class Foo{ public void hello(){ new HelloWorld().hello(); } } jug.hello.api
  • 15. Bundle – package propety Bundle: jug.hello.api.v1 Export-Package: jug.hello.api; version ="1.0.0" Bundle: jug.hello.api.v2 Export-Package: jug.hello.api; version =“2.0.0"
  • 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. Life Cycle Change System Behavior In Runtime Demo remote Demo jug.hello.api (change import version)
  • 20. OSGi Service & URL Shorten Bundle
  • 21. Service Bundle shorten.api 僅提供 interface shorten.client Swing UI 使用者互動介面 shorten.orz 0rz.tw 短址服服
  • 22. Service Registry BundleContext. registerService() ServiceRegistration registration ; Properties prop = new Properties(); prop.setProperty("name", "0rz.tw"); registration = context.registerService ( IShortenURL.class.getName() , new OrzURL(), prop);
  • 23. Find All Service BundleContext. getServiceReferences () ServiceReference[] refs = context.getServiceReferences ( IShortenURL.class.getName() , null );
  • 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. Service Tracker Monitor Service come and go ServiceTracker addingService() 當 Service 被發佈時觸發 removedService() 當 Service 被終止時觸發
  • 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. 你需要 OSGi 嗎? 你的系統需要執行期改變行為嗎? 你的系統提供的服務經常變動嗎?
  • 31. 導入 OSGi 的問題 沿用 META/MANIFEST.MF, BUT … 「手工」撰寫 MANIFEST.MF 是自虐。 有單行長度限制 最後一行需要空行 Metadata 需要填的內容可能很多 Import-Package Export-Package …
  • 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. 導入 OSGi 的問題 Bundle ClassLoader 真麻煩 !? 我想要把舊的專案搬到 OSGi 上? 這是可行的 但是,所有使用到的 Library 都必需轉成 Bundle 並且設 Export-Package 然後,你會開始抱怨。 OSGi Sucks. Daxx it. OSGi.
  • 34. 導入 OSGi 的問題 JARs ? Bundles 使用到的 Library 都已經轉成 OSGi Bundle 了嗎? http:// www.springsource.com /repository/app 可能將它們的轉成 OSGi Bundle 嗎? http://aqute.biz/Code/Bnd http://wiki.ops4j.org/confluence/display/ops4j/Pax 能否單純以 JAR 的型式使用 Bundle-ClassPath Bundle-ClassPath + Fa?ade Pattern ? OSGi Service
  • 35. 導入 OSGi 的問題 問題在設計 以 Fa?ade Pattern 隔離底層不需共用的 JARs 管理 Bundle Dependency ,管制共用的 Bundle org.apache.commons.* Spring 採介面 / 實作分離的設計,以 Service 建構系統。
  • 36. 導入 OSGi 的問題 OSGi Run many app in single vm 需要禁止任何終止 VM 活動的程式 使用 SecurityManager ( 啟動 Security Layer 防護功能 ) System.exit(0);