知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當(dāng)前位置>首頁 » 新聞資訊 » 網(wǎng)站建設(shè) >
利用OSGi開發(fā)WEB應(yīng)用
發(fā)表時間:2012-8-29
發(fā)布人:葵宇科技
瀏覽次數(shù):49
在Eclipse中OSGi程序的開發(fā)是以插件工程的方式進行開發(fā)的。在Eclipse IDE在選擇“File->New Project”,在彈出的對話框中的“Plug-in Development”目錄下選擇“Plug-in Project”。
點擊下一步后,在創(chuàng)建工程對話框“Project name”輸入框中輸入“SimpleWebOSGi”作為工程名,在“Target platform”欄選擇“an OSGi framework”,點擊下一步。
在“Plug-in Content”對話框中的“Plug-in Provider:”欄可以輸入插件提供者名稱,因為我們是學(xué)習(xí),非正規(guī)商業(yè)插件發(fā)布,故而留空了,然后點“Next”繼續(xù)。
在“Templates”對話框中,我們選擇“Hello OSGi Bundle”作為模板,然后選擇“Next”。
“Basic OSGi Bundle”對話框,是模板需要輸入的Bundle啟動和停止時列印的消息內(nèi)容,在此保留默認(rèn),點“Finish”。
點完成按鈕后可能會彈出一提示框,用來提示您是否切換到插件開發(fā)視圖,請按照自己的開發(fā)習(xí)慣選取,在這里我沒有選擇插件開發(fā)視圖,隨后Eclipse開始創(chuàng)建工程,完成后的樣子如下圖所示。
在左側(cè)的包瀏覽面板中可以看到OSGi工程的結(jié)構(gòu),“Plug-in Dependencies”下是OSGi插件運行需要的組件,src目錄下是自動生成的源代碼,simplewebosgi.Activator是Bundle生成周期管理類,可以監(jiān)聽組件的啟動和停止動作。與普通Java工程所不同的是向?qū)伞癕ETA-INF”目錄以及其下的文件MANIFEST.MF文件,此文件會隨插件的發(fā)布一起被打到j(luò)ar包中,定義了Bundle的標(biāo)識、版本、名稱、運行環(huán)境等內(nèi)容。右邊是可視化的配置管理器,在這里可以定義插件,配置插件運行所依賴的組件及需要導(dǎo)入的包,運行時環(huán)境,編譯構(gòu)建配置等。
以上工作已經(jīng)使我們具備了開發(fā)OSGi的基本框架,接下來我們看一下如何將靜態(tài)頁面發(fā)布成通過HTTP訪問的頁面。
首先,我們在源代碼src目錄下創(chuàng)建一個放置頁面文件的目錄“webroot”,然后在其下創(chuàng)建一個hello.html文件,其中的HTML代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>a test page</title>
</head>
<body>Hello, This is a test page!</body>
</html>
然后,引入插件需要的包,文章開始我們已經(jīng)談到有兩種方式,這兩種方式需要引入的包不同,不管哪種方式均需要引入javax.servlet包,org.eclipse.equinox.http方式需要引入的包有:org.eclipse.equinox.http,另外一種方式需要引入的包除javax.servlet外,還有org.eclipse.equinox.http.jetty ,org.eclipse.equinox.http.servlet ,org.mortbay.jetty ,org.apache.commons.logging,在這里我們采取第一種方式。
在繼續(xù)之前需要注意的是,默認(rèn)的Eclipse 3.4中并沒有org.eclipse.equinox.http相關(guān)的包,需要我們先到http://download.eclipse.org/equinox/網(wǎng)站下載相關(guān)包,并解壓后,將org.eclipse.equinox.http_*.jar拷貝到Eclipse的plugins目錄下,然后重新啟動Eclipse。雙擊META-INF/MANIFEST.MF文件,打開配置管理界面,并選擇“Dependencies”頁簽,如下圖所示。
在“Required Plug-ins”欄中點擊“Add”按鈕,在“Plug-in Selection”對話框中選擇org.eclipse.equinox.http*包后,點“OK”。
同理將javax.servlet*包加入到“Required Plug-ins”欄中。
再在“Imported Packages”欄中點擊“Add”按鈕,將org.osgi.service.http包引入工程中,如下圖所示。
加入后的情況如下圖所示。
現(xiàn)在雖然HTML頁面文件有了,包也配置好了,但是還不能通過HTTP訪問相應(yīng)的頁面,如果現(xiàn)在測試運行訪問http://localhost:8080服務(wù),瀏覽器會提示找不到頁面,我們需要將頁面注冊到OSGi Http服務(wù)中,我們將在simplewebosgi.Activator中注冊,將此類修改為如下內(nèi)容:
package simplewebosgi;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.http.HttpService;
public class Activator implements BundleActivator {
private ServiceReference serviceReference;
private HttpService httpService;
private static BundleContext bc;
/*
* (non-Javadoc)
*
* @see
* org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext
* )
*/
public void start(BundleContext context) throws Exception {
System.out.println("Hello World!!");
bc = context;
registerResource();
}
private void registerResource() {
try {
serviceReference = bc.getServiceReference(HttpService.class.getName());
if (serviceReference != null) {
httpService = (HttpService) bc.getService(serviceReference);
httpService.registerResources("/demo", "webroot", null);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* (non-Javadoc)
*
* @see
* org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
System.out.println("Goodbye World!!");
unregisterResource();
}
private void unregisterResource() {
try {
httpService.unregister("/demo");
} catch (Exception e) {
e.printStackTrace();
}
}
}
寫好如上述代碼后,我們將試驗運行一下,看看執(zhí)行效果!運行之前需要配置一下環(huán)境,雙擊META-INF/MANIFEST.MF打開配置管理界面,選擇“Runtime”頁簽,在“Classpath”欄中點“Add”按鈕將bin目錄加入。
然后,在“Run”菜單選擇“Run Configuration...”,打開運行配置對話框,在對話框中左側(cè)欄中選擇“OSGi Framework”項,點擊右鍵“New”一項新的配置,在右側(cè)頂部的“Name”欄輸入“SimpleWebOSGi”,在“Bundles”標(biāo)簽欄下面,勾選以下內(nèi)容:
SimpleWebOSGi
javax.servlet
org.eclipse.equinox.http
org.eclipse.osgi
org.eclipse.osgi.services
由于我們要開發(fā)的是一個WEB應(yīng)用,所以,還需要打開“Arguments”頁簽,并在“VM Arguments”欄加入“-Dorg.osgi.service.http.port=8080”,指定應(yīng)用服務(wù)的端口。
點擊“Run”運行應(yīng)用程序。在Eclipse控制臺看到“osgi> Hello World!!”后,打開瀏覽器在地址輸入http://localhost:8080/demo/hello.html進行測試,當(dāng)您看到如下結(jié)果時那就忘該恭喜你了,一個WEB應(yīng)用就這樣搭建成功了!
相關(guān)案例查看更多
相關(guān)閱讀
- 汽車報廢系統(tǒng)
- 網(wǎng)絡(luò)公司哪家好
- 昆明小程序哪家好
- 網(wǎng)站建設(shè)哪家強
- 云南etc小程序
- 前端技術(shù)
- 小程序模板開發(fā)公司
- 搜索引擎優(yōu)化
- 定制小程序開發(fā)
- 網(wǎng)頁制作
- 網(wǎng)站建設(shè)專家
- 花農(nóng)小程序
- 報廢車拆解回收管理系統(tǒng)
- 昆明網(wǎng)站制作
- 微信小程序開發(fā)入門課程
- painter
- 旅游網(wǎng)站建設(shè)
- 小程序開發(fā)平臺前十名
- 河南小程序制作
- SEO
- 云南網(wǎng)站建設(shè)一條龍
- 網(wǎng)站建設(shè)首選公司
- 小程序制作
- 海報插件
- 云南網(wǎng)站建設(shè)專業(yè)品牌
- 云南網(wǎng)站優(yōu)化公司
- 表單
- 網(wǎng)站建設(shè)百度官方
- 網(wǎng)站建設(shè)靠譜公司
- 網(wǎng)站建設(shè)案例