Ⅰ OSGI是什麼
今天在看公司的文檔的時候,發現了好多不懂得名詞。特別是對OSGI這個詞比較的感興趣,就到網上去查了一下他的一些資料。以我的技術水平,看了半天愣是沒看明白。盡管沒有看明白,但還是要寫下來,免得下次要找資料的時候還是要到處亂找。
OSGI(Open Service Gateway Initiative) 它可以被看做OSGi Alliance組織;也可以認為是該組織制定的一個基於Java
a) 您可以在不重啟容器的情況下,動態地安裝、卸載、啟動和停止您的應用程序中的不同模塊;
b) 對於您應用程序中的某一特定模塊,容器可以同時運行該模塊的多個版本;
c) OSGi為開發嵌入式應用、移動應用、富互聯網應用(RIA)提供了非常優秀的基礎架構
個模塊負責視圖層,另一個模塊負責DAO層,第三個模塊負責數據訪問層,如果我們使用OSGi容器來管理這些模塊之間的交叉依賴,我們就可以在不用重啟該
Web應用的前提下,將DAO層從速度較慢的升級到速度較快的DAO。
附:一些OSGI的資料你好,OSGI
這是一個OSGI的專題匯總。裡面的資料還是很不錯的
OSGI Alliance
這個是OSGI的官方網站。不過是英文的 ^_^
這個OSGI在javaEye網站上的專題。很不錯,可以去看看
Ⅱ 如何開發基本OSGi的分布式SOA插件應用服務
概念不太一樣 SOA是面向服務的架構,將業務邏輯提煉成共用服務,對外提供服務,也不一定就用webservice通信,也可以是socket、EJB等等。目標就是建成一個服務組件的「超市」,供別人自行選用。
Ⅲ 如何將OSGI的Bundle發布為WebService
貌似使用 cxf可以將osgi服務發布為一個webservice, 見:以 OSGi 包的形式開發和部署 Web 服務
但是我沒有用過,我也有這方面的需求希望能和有經驗的人士一起探討
Ⅳ 使用OSGI開發webapp 怎麼添加filter
根據你的描述: web bundle 我的實現方法是在OSGi中加入一個jetty bundle,其他bundle引用這個HttpService,並把自己加入到這個HttpService中。
Ⅳ 怎樣在web頁面控制osgi插件工程的開啟,停止,下載和上傳功能(是用sts工具開發的spring dm的插件工程)
boudle啟停應該是由後台腳本控制,web頁面要做控制可以往後台發送命令的形式,具體技術java調用shell命令。
Ⅵ java自定義類載入器怎麼在web項目中應用
1、設置斷點
2、啟動servers端的debug模式
3、運行程序,在後台遇到斷點時,進入debug調試狀態
=============================
作用域 功能 快捷鍵
全局 單步返回 F7
全局 單步跳過 F6
全局 單步跳入 F5
全局 單步跳入選擇 Ctrl+F5
全局 調試上次啟動 F11
全局 繼續 F8
全局 使用過濾器單步執行 Shift+F5
全局 添加/去除斷點 Ctrl+Shift+B
全局 顯示 Ctrl+D
全局 運行上次啟動 Ctrl+F11
全局 運行至行 Ctrl+R
全局 執行 Ctrl+U
Ⅶ WebSphere Liberty 最新版都有什麼提升
Liberty 是一款全新的輕量級應用伺服器,它將用戶的良好開發體驗作為最主要的出發點。其主要特點和內容包括:
高模塊化——該功能允許用戶根據自己應用程序的需求啟用或者禁用相關的 feature(所謂 feature,在這里指的是運行應用程序所需要的各種資源的支持。比如,應用程序用到了 JSP,我們就需要啟動 JSP 這個 feature,如果不在需要此 feature,就可以將其禁用。通過這種模塊化的控制,我們可以按需啟動不同的 feature,包括 JSP, Servlet, JPA 等等,這種控制是實現輕量級應用伺服器的基礎)。
輕量級—— Liberty 採用了多種技術進行和優化(主要是 OSGi 的應用),與傳統的 WAS 相比,極大的減少了運行時的內存消耗。
高動態性——由於採用了 OSGi 的架構,程序員在開發的時候,可以動態修改配置文件,應用程序以及伺服器的運行時信息,這些修改都是實時生效的,不需要重啟伺服器。
快速——由於採用了高模塊化的設計,Liberty 應用伺服器會「按需啟動」,自身消耗的系統資源很少,對執行任務的反應時間也非常短,例如,一般來說 Liberty 的啟動時間小於 5 秒。
配置簡單——在整個開發過程中,用戶只需要和一個配置文件(server.xml)打交道,而且配置的使用也非常靈活。
盡管 Liberty 與傳統 WAS 相比只是一個「小塊頭」,但是在 Web 和 OSGi 應用程序的開發上,Liberty 與傳統 WAS 完全保持一致,在 Liberty 上開發的程序,可以直接移植到傳統 WAS 上,不需要做任何的改變。相比傳統 WAS 的龐大,Liberty 在為用戶提供良好的開發體驗上遙遙領先。
Ⅷ 如何在 WebSphere Application Server V8 中部署和管理 OSGi 應用
Blog 應用程序包里共有 5 個 bundle,但是只需要其中的四個就可以運行這個程序,因為第五個 bundle 是持久化 bundle 的更新版本,主要是用來演示如何去動態更新 OSGi bundle 的。另外,要想使 Blog 應用正常運行,還有兩個與日誌相關的 bundle,這兩個 bundle 需要事先導入到 WAS 的內部 bundle 存儲庫里。以上所提到的所有資源被放在 blogSample.zip 文件中的 installableApps 文件夾里。這些 bundle 是按功能劃分的:
com.ibm.samples.websphere.osgi.blog.persistence, 包含了和持久化相關的代碼,同時也提供了一些介面,可以被主程序用來執行博客更新和查詢功能。
com.ibm.samples.websphere.osgi.blog_1.0.0,是 Blog 應用的主程序,包含了主要的業務邏輯代碼,並負責和前端 web 層與後端持久化層的交互。
com.ibm.samples.websphere.osgi.blog.web,藉助 html、css 等完成前端顯示的功能。
com.ibm.samples.websphere.osgi.blog.api,包含 Blog 應用所需要的 API。
com.ibm.samples.websphere.osgi.blog.persistence_1.1.0,是持久化 bundle 的更新版本,新增了對博客文章的評論服務。
Blog 提供了兩種部署方式,一種是利用腳本進行完整的部署,另一種是先用腳本做一些初始的配置,如數據源的配置,然後再用 WAS 管理控制台或命令行方式去安裝 Blog 應用。在部署成功以後,我們還可以對應用進行使用、維護、拆卸以及更新操作。在本文中,我們使用第二種方式來部署 Blog 應用。
在 WAS V8 中配置 Blog 應用所需資源
安裝 Blog 應用包含兩個部分,一部分是配置 Blog 應用所需的資源,例如建立資料庫、配置數據源等;另一部分是利用 WAS 管理控制台或者命令行工具安裝 Blog 應用到 WAS 上。在這里我們先介紹第一部分,第二部分穿插在後續的 WAS 對 OSGi 應用部署和管理功能介紹的篇章中。
我們使用腳本配置 Blog 應用所需的資源,這些腳本存放在 blogSample.zip 中的 scripts 目錄里。其中,createBlogDb.sql 用來創建所需的 Derby 資料庫和相關資料庫表,blogSampleInstall.py 包含了一些 Jython 命令用來創建數據源,以及以默認的方式安裝 Blog 應用。
使用腳本配置 Blog 應用
使用如下命令創建和配置 Derby 資料庫(BLOGDB)以及相關資料庫表
對於 Unix 系統
app_server_root/derby/bin/embedded/ij.sh scripts/createBlogDb.sql
對於 Windows 系統
app_server_root\derby\bin\embedded\ij.bat scripts\createBlogDb.sql
使用如下命令創建數據源
對於 Unix 系統
app_server_root/profiles/profileName/bin/wsadmin.sh
-f scripts/blogSampleInstall.py setupOnly serverName nodeName
對於 Windows 系統
app_server_root\profiles\profileName\bin\wsadmin.bat
-f scripts\blogSampleInstall.py setupOnly serverName nodeName
運行完上述命令後,可以登錄到 WAS 控制台查看剛剛創建的數據源。導航到 Resources > JDBC > Data sources 面板:
部署你的 OSGi 應用
管理 bundle 存儲庫
在上文我們提到 com.ibm.samples.websphere.osgi.logging.api.jar 和 com.ibm.samples.websphere.osgi.logging.impl.jar 這兩個 bundle 是 Blog 應用正常運行所不可或缺的,在安裝 Blog 應用之前,需要先將這兩個 bundle 導入到 WAS 的 bundle 存儲庫中。在這一節我們就介紹如何去管理 WAS 的 bundle 存儲庫。
不同的 OSGi 應用之間可以共享很多通用的 bundle,為了簡化對共享 bundle 管理工作以及避免每一個 OSGi 應用都單獨的去維護這些 bundle,WAS 提出了 bundle 存儲庫的概念。共享的 bundle 或者組合 bundle 以及第三方類庫的 bundle 都可以事先導入到 bundle 存儲庫中,每一個 OSGi 應用只需聲明對這些 bundle 的引用就可以很方便的使用 bundle 存儲庫里的 bundle。WAS 的 bundle 存儲庫包括內部存儲庫和外部存儲庫,前者是將共享的 bundle 保存在本地,而後者則可以通過添加鏈接(名字和 URL)使用外部的 bundle。
管理內部 bundle 存儲庫
使用 WAS 管理控制台管理內部 bundle 存儲庫
管理員可以使用 WAS 管理控制台查看已導入的 bundle 以及 bundle 的詳細信息,還能通過管理控制台向存儲庫添加和從存儲庫刪除 bundle。
啟動 WAS 管理控制台
導航到 Environment > OSGi bundle repositories > Internal bundle repository 頁面在頁面中顯示的列表就是已經導入到 bundle 存儲庫里的 bundle,如果是第一次使用,則會顯示如下空白頁面:
在 bundle 存儲庫頁面可以添加、刪除 bundle 或者顯示 bundle 詳細信息
添加單一 bundle 或者合成 bundle 到存儲庫
點擊 New,將顯示上傳 bundle 的頁面
在對話框里輸入 bundle 或者合成 bundle 所在的路徑
點擊 OK,所指定 bundle 或者合成 bundle 就會被上傳到 bundle 存儲庫
對於 Blog 應用:重復上面的操作,添加 com.ibm.samples.websphere.osgi.logging.api.jar 和 Com.ibm.samples.websphere.osgi.logging.impl.jar 到存儲庫中。如下圖所示:
刪除存儲庫里的 bundle,首先選中需要刪除的 bundle,然後點擊 Delete 即可完成操作
查看 bundle 的詳細信息,點擊 bundle 的名字就可以進入到 bundle 的詳細信息頁面
圖 5. Bundle 詳細信息
在完成添加和刪除操作以後,需要保存修改到主配置文件中。
使用命令行管理內部 bundle 存儲庫
使用 wsadmin 命令行工具可以實現 bundle 的添加、刪除、列表以及顯示詳細信息操作。由於 wsadmin 默認使用的腳本語言是 jacl,而我們使用的都是 jython 腳本或者命令,所以我們首先要將 wsadmin 的默認腳本語言修改為 jython,方法是編輯如下文件:<profile_root>\<profile_name>\properties\wsadmin.properties,修改"com.ibm.ws.scripting.defaultLang=jython"
導航到 <profile_root>\<profile_name>\bin 目錄,啟動 wsadmin 命令行工具:
添加單一 bundle 或合成 bundle 到內部存儲庫
使用 addLocalRepositoryBundle 命令添加 bundle 到存儲庫,命令格式如下:
AdminTask.addLocalRepositoryBundle('-file path')
該命令中只有一個參數 file,用來指定你要添加的 bundle 的路徑,對於 Blog 應用,我們用如下命令依次添加上文提到的兩個和 log 相關的 bundle:
AdminTask.addLocalRepositoryBundle('[-file "C:\\blogSample_v8\\blogSample\\installableApps
\\com.ibm.samples.websphere.osgi.logging.impl.jar"]')
AdminTask.addLocalRepositoryBundle('[-file "C:\\blogSample_v8\\blogSample\\installableApps\
\com.ibm.samples.websphere.osgi.logging.api.jar"]')
AdminConfig.save()
添加完以後,登錄 WAS 管理控制台,導航至 Internal bundle repository 頁面,您將看到兩個 bundle 已經被成功添加,如圖 4 所示。
顯示已添加到存儲庫里的 bundle 列表
使用 listLocalRepositoryBundles 命令來顯示已經添加成功的 bundle 列表,命令格式如下:
AdminTask.listLocalRepositoryBundles()
顯示 bundle 的詳細信息
使用 showLocalRepositoryBundle 命令來顯示 bundle 信息,命令格式如下 :
AdminTask.showLocalRepositoryBundle( 』 -symbolicName bundle_symbolic_name
-version bundle_version 』 )
兩個參數分別是要顯示 bundle 的名字和版本信息。
將 bundle 從存儲庫刪除
使用 removeLocalRepositoryBundle 或則 removeLocalRepositoryBundles 命令刪除一個或多個 bundle,命令格式如下:
AdminTask.removeLocalRepositoryBundle( 』 -symbolicName bundle_symbolic_name
-version bundle_version 』 )
AdminTask.removeLocalRepositoryBundles([
』
bundle1_symbolic_name;bundle1_version
bundle2_symbolic_name;bundle2_version
bundle3_symbolic_name;bundle3_version 』
])
管理外部 bundle 存儲庫
對於外部 bundle 存儲庫,WAS 同樣提供了管理控制台和命令行兩種管理方式,並且對於外部庫的控制和內部庫的控制類似。在這里我們就不多加介紹,有興趣的讀者可以閱讀本文末參考資料了解更多詳細信息。
Ⅸ GlassFish是什麼基於OSGi的Web伺服器
GlassFish 是一個輕量級的Web2.0開發和部署平台,建立在基於OSGi的模塊化架構上。開發者可以從這個支持動態擴展和可嵌入式的平台上獲益,此平台還支持現存的Java Web技術,以及JRuby和Groovy。GlassFish包括哪些功能?GlassFish提供了一個基於OSGi的輕量級可擴展的核心。與GlassFish的更新中心結合,開發人員可以獲得Java Web技術,動態語言支持,容易使用的管理和命令行界面。GlassFish社團正在開發一個免費,開源的Java應用伺服器。這個伺服器實現了Java平台中的最新特性。Java平台包括一些技術的最新版本如:◆Enterprise JavaBeans (EJB) 3.0, ◆JavaServer Faces (JSF) 1.2, ◆Servlet 2.5, ◆JavaServer Pages (JSP) 2.1, ◆Java API for Web Services (JAX-WS) 2.0, ◆Java Architecture for XML Binding (JAXB) 2.0, ◆Java Persistence 1.0, ◆Common Annotations 1.0, ◆Streaming API for XML (StAX) 1.0和其它一些新的技術。目前最新版的GlassFish技術預覽版已經發布,具有高度模塊化特點,擴展方便,支持java,
Ⅹ osgi新建web程序,缺少org.morbay.jetty包的依賴。
本身就帶著。運行時需要明確選擇jetty的相關插件。