欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

利用OSGi開發(fā)WEB應(yīng)用 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(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

在OSGi中有規(guī)定了WEB服務(wù),那就是Http服務(wù),在Equinox中以兩種方式實現(xiàn)OSGi Http服務(wù):(1)org.eclipse.equinox.http;(2)org.eclipse.equinox.http.jetty,Equinox 3.4支持Servlet API 2.4。OSGi的Web應(yīng)用開發(fā)方法與其它OSGi的開發(fā)方式相似,下面以一個簡單例子說明一下開發(fā)的過程。

在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)案例查看更多