新聞中心
本篇內(nèi)容介紹了“OSGI是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)網(wǎng)站建設公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質(zhì)量求生存,以技術求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,網(wǎng)站建設、成都網(wǎng)站設計,塑造企業(yè)網(wǎng)絡形象打造互聯(lián)網(wǎng)企業(yè)效應。
初識 OSGI
背景
當前product是以solution的方式進行售賣,但是隨著公司業(yè)務規(guī)模的快速夸張,隨之而來的是新客戶的產(chǎn)品開發(fā),老客戶的產(chǎn)品維護,升級以及修改bug,團隊的效能明顯下降,為了解決此類問題,必須站在公司戰(zhàn)略的統(tǒng)一高度來重構系統(tǒng)。
榮幸的是,本人在此時加入團隊并負責系統(tǒng)架構的升級與重構工作。因為公司在全世界都有客戶,而且客戶又來自于各行各業(yè),帶來的問題就是如何抽離公共業(yè)務的同時,又能不影響客戶的定制化需求開發(fā)?產(chǎn)品團隊專注于系統(tǒng)的核心邏輯開發(fā),而一些定制化需求交付給global team 去開發(fā)?
選型
技術沒有銀彈,目前沒有完全確定要使用OSGI的方式來實現(xiàn),因為本人之前使用Spring Cloud & Spring Cloud Alibaba各實現(xiàn)了一種demo, 當然也可以實現(xiàn)我們的服務化,高可用以及動態(tài)擴展。但是在解決插件定制化這塊,相對來說還是不太熟悉,然后OSGI進入眼簾了。
OSGI 簡介
OSGI 是 Open Service Gateway Initiative(開發(fā)服務網(wǎng)關協(xié)議)。
指維護OSGI規(guī)范的官方聯(lián)盟
> OSGi Alliance是一個由Sun Microsystems、IBM、愛立信等于1999年3月成立的開放的標準化組織,最初名為Connected Alliance。
官方聯(lián)盟維護的基于JAVA語言的服務規(guī)范
> 該規(guī)范和核心部分是一個框架,其中定義了應用程序的生命周期模式和服務注冊。基于這個框架定義了大量的OSGi服務:日志、配置管理、偏好,HTTP(運行servlet)、XML分析、設備訪問、軟件包管理、許可管理、星級、用戶管理、IO連接、連線管理、Jini和UPnP。
osgi.org 官方描述:
> The Dynamic Module System for JAVA
通俗講:使用OSGI實現(xiàn)的程序(Bundle)就是一個插件,可以動態(tài)的安裝,卸載,啟動,停止等等而不需要啟動容器。
目前使用最廣的兩款OSGI 框架:
Apache Felix
> Apache Felix是Apache旗下的一個OSGi框架,項目本身非常成熟,已經(jīng)被用到了很多其他的項目中,例如Apache Servicemix。它本身提供的服務也是最全的,幾乎涵蓋了全部的OSGi 4.2的標準。除此之外還提供了一些非標準的功能,例如iPOJO??蚣鼙旧矸浅>o湊,你只需要3個包加一個shell就可以運行了,無論是開發(fā)還是Debug都非常簡便。除了Felix,還有兩個項目是和OSGi相關的。一個是Apache Felix Karaf,它本身是Felix的一個子項目,但他其實是封裝了Felix提供更高一層的Runtime,例如提供了JAAS。另一個是Apache Aries,目前還處于起步階段,它作為Felix的補充,提供OSGi企業(yè)級規(guī)范,包括JPA、JDBC、JTA、JNDI等等。
Equinox
> Equinox是Eclipse旗下的OSGi框架,本身也被Eclipse采用,是Eclipse注明的PDE開發(fā)環(huán)境的底層。Equinox本身也是相當?shù)娜娴目蚣?,提供的功能不比Felix少多少。但是它功能的分類就稍顯混亂,文檔和Sample也組織的不是很好。事實上相當Equinox還是被當做開發(fā)Eclipse Plugin的應用較多,如果你要開發(fā)一個Web程序,你就會感到它本身的功能和文檔不夠全面。Equinox最大的優(yōu)勢在于它和Eclipse結合緊密,只要你安裝了PDE,你就已經(jīng)有了Equinox,可以方便的在Eclipse里設置你開發(fā)的Bundle,啟動、部署等操作也異常簡單,而且有專門的Debug界面,你還能要求什么呢? > > 如果你想基于Eclipse開發(fā),Equinox無疑是好選擇。但對于新手而言,有時候會搞混Eclipse Plugin與OSGi的關系。
Talk is cheap, Show me the code.
環(huán)境安裝
Eclipse 版本
> 因本人好幾年沒使用Eclipse, 因此帶上安裝再熟悉一下哈。。。
訪問:https://www.eclipse.org/downloads/ 下載客戶端
選擇企業(yè)版之后,下一步
點擊INSTALL,等待安裝完成。
創(chuàng)建項目
File => New => Project
選擇Plug-in Development => Plug-in Project
填寫項目屬性(OSGI framework 選擇 standard)
點擊Next(關注Activator,這個會處理OSGI的start() 和 stop()時調(diào)用,相當于我們的main函數(shù))
點擊Next(選擇Hello OSGI)
點擊 Finish
配置環(huán)境
選擇 Run => Run Configurations
選擇OSGI Framework,右鍵點擊
New Configration
選擇Bundles(因為默認創(chuàng)建會選擇全部Target Platform,在
Eclipse IDE 2019?09
版本下,直接啟動會報錯。所以取消所有的選項,只勾選以下就個必須的bundle就足夠。)點擊
Validate Bundles
驗證我們的配置項是否正確。如果顯示如上消息,恭喜你,可以點擊Run啟動OSGI console 啦!??!
OSGI Console 啟動
IDEA 版本
IDEA也帶有OSGI 開發(fā)工具包,let's do it.
配置Framework
這里我選擇的是Eclipse Equinox 4.13,download傳送門 ,點擊下載[equinox-SDK-4.13.zip]
,下載完成之后開始配置。
IDEA(
version: ULTIMATE 2019.2
) => File => Settings (搜索OSGI,如下圖)點擊 + 添加,選中上一步下載的SDK解壓目錄
添加成功后,選擇OSGI 標簽,選擇OSGI framework 為我們配置的Equinox.
>
import Bnd/Bndtools projects automatically
指的是將普通的jar包 打包 為OSGI 可用的jar.
創(chuàng)建項目
點擊File => New => Project, 選擇Java標簽下的OSGI
選擇Use Library,點擊Create
找到
org.eclipse.osgi_3.15.0.v20190830-1434.jar
,選中,效果如下,點擊下一步。填寫項目屬性
點擊Finish。
如上圖所示,IDEA 創(chuàng)建的不會幫助我們生成
Activator
以及Manifest.mf
文件。
OSGI Console 啟動
點擊Run => Edit Configurations
點擊 + ,選擇
OSGI Bundles
,添加核心bundles運行(ss 為查看OSGI運行狀態(tài)命令)
Eclipse與IDEA開發(fā)OSGI,主要是manifast文件的生成過程存在比較大的差異。
“OSGI是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
分享標題:OSGI是什么
本文鏈接:http://fisionsoft.com.cn/article/gdpdio.html