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

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

159-8711-8523

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

知識(shí)

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!

您當(dāng)前位置>首頁(yè) » 新聞資訊 » 網(wǎng)站建設(shè) >

利用OSGi開(kāi)發(fā)WEB應(yīng)用

發(fā)表時(shí)間:2012-8-29

發(fā)布人:葵宇科技

瀏覽次數(shù):49

在OSGi中有規(guī)定了WEB服務(wù),那就是Http服務(wù),在Equinox中以兩種方式實(shí)現(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)用開(kāi)發(fā)方法與其它OSGi的開(kāi)發(fā)方式相似,下面以一個(gè)簡(jiǎn)單例子說(shuō)明一下開(kāi)發(fā)的過(guò)程。

在Eclipse中OSGi程序的開(kāi)發(fā)是以插件工程的方式進(jìn)行開(kāi)發(fā)的。在Eclipse IDE在選擇“File->New Project”,在彈出的對(duì)話框中的“Plug-in Development”目錄下選擇“Plug-in Project”。

點(diǎn)擊下一步后,在創(chuàng)建工程對(duì)話框“Project name”輸入框中輸入“SimpleWebOSGi”作為工程名,在“Target platform”欄選擇“an OSGi framework”,點(diǎn)擊下一步。

在“Plug-in Content”對(duì)話框中的“Plug-in Provider:”欄可以輸入插件提供者名稱,因?yàn)槲覀兪菍W(xué)習(xí),非正規(guī)商業(yè)插件發(fā)布,故而留空了,然后點(diǎn)“Next”繼續(xù)。

在“Templates”對(duì)話框中,我們選擇“Hello OSGi Bundle”作為模板,然后選擇“Next”。

“Basic OSGi Bundle”對(duì)話框,是模板需要輸入的Bundle啟動(dòng)和停止時(shí)列印的消息內(nèi)容,在此保留默認(rèn),點(diǎn)“Finish”。

點(diǎn)完成按鈕后可能會(huì)彈出一提示框,用來(lái)提示您是否切換到插件開(kāi)發(fā)視圖,請(qǐng)按照自己的開(kāi)發(fā)習(xí)慣選取,在這里我沒(méi)有選擇插件開(kāi)發(fā)視圖,隨后Eclipse開(kāi)始創(chuàng)建工程,完成后的樣子如下圖所示。

在左側(cè)的包瀏覽面板中可以看到OSGi工程的結(jié)構(gòu),“Plug-in Dependencies”下是OSGi插件運(yùn)行需要的組件,src目錄下是自動(dòng)生成的源代碼,simplewebosgi.Activator是Bundle生成周期管理類,可以監(jiān)聽(tīng)組件的啟動(dòng)和停止動(dòng)作。與普通Java工程所不同的是向?qū)?huì)生成“META-INF”目錄以及其下的文件MANIFEST.MF文件,此文件會(huì)隨插件的發(fā)布一起被打到j(luò)ar包中,定義了Bundle的標(biāo)識(shí)、版本、名稱、運(yùn)行環(huán)境等內(nèi)容。右邊是可視化的配置管理器,在這里可以定義插件,配置插件運(yùn)行所依賴的組件及需要導(dǎo)入的包,運(yùn)行時(shí)環(huán)境,編譯構(gòu)建配置等。

以上工作已經(jīng)使我們具備了開(kāi)發(fā)OSGi的基本框架,接下來(lái)我們看一下如何將靜態(tài)頁(yè)面發(fā)布成通過(guò)HTTP訪問(wèn)的頁(yè)面。

首先,我們?cè)谠创asrc目錄下創(chuàng)建一個(gè)放置頁(yè)面文件的目錄“webroot”,然后在其下創(chuàng)建一個(gè)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>

然后,引入插件需要的包,文章開(kāi)始我們已經(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中并沒(méi)有org.eclipse.equinox.http相關(guān)的包,需要我們先到http://download.eclipse.org/equinox/網(wǎng)站下載相關(guān)包,并解壓后,將org.eclipse.equinox.http_*.jar拷貝到Eclipse的plugins目錄下,然后重新啟動(dòng)Eclipse。雙擊META-INF/MANIFEST.MF文件,打開(kāi)配置管理界面,并選擇“Dependencies”頁(yè)簽,如下圖所示。

在“Required Plug-ins”欄中點(diǎn)擊“Add”按鈕,在“Plug-in Selection”對(duì)話框中選擇org.eclipse.equinox.http*包后,點(diǎn)“OK”。

同理將javax.servlet*包加入到“Required Plug-ins”欄中。

再在“Imported Packages”欄中點(diǎn)擊“Add”按鈕,將org.osgi.service.http包引入工程中,如下圖所示。

加入后的情況如下圖所示。

現(xiàn)在雖然HTML頁(yè)面文件有了,包也配置好了,但是還不能通過(guò)HTTP訪問(wèn)相應(yīng)的頁(yè)面,如果現(xiàn)在測(cè)試運(yùn)行訪問(wèn)http://localhost:8080服務(wù),瀏覽器會(huì)提示找不到頁(yè)面,我們需要將頁(yè)面注冊(cè)到OSGi Http服務(wù)中,我們將在simplewebosgi.Activator中注冊(cè),將此類修改為如下內(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();
}
}
}
寫好如上述代碼后,我們將試驗(yàn)運(yùn)行一下,看看執(zhí)行效果!運(yùn)行之前需要配置一下環(huán)境,雙擊META-INF/MANIFEST.MF打開(kāi)配置管理界面,選擇“Runtime”頁(yè)簽,在“Classpath”欄中點(diǎn)“Add”按鈕將bin目錄加入。

然后,在“Run”菜單選擇“Run Configuration...”,打開(kāi)運(yùn)行配置對(duì)話框,在對(duì)話框中左側(cè)欄中選擇“OSGi Framework”項(xiàng),點(diǎn)擊右鍵“New”一項(xiàng)新的配置,在右側(cè)頂部的“Name”欄輸入“SimpleWebOSGi”,在“Bundles”標(biāo)簽欄下面,勾選以下內(nèi)容:

SimpleWebOSGi
javax.servlet
org.eclipse.equinox.http
org.eclipse.osgi
org.eclipse.osgi.services

由于我們要開(kāi)發(fā)的是一個(gè)WEB應(yīng)用,所以,還需要打開(kāi)“Arguments”頁(yè)簽,并在“VM Arguments”欄加入“-Dorg.osgi.service.http.port=8080”,指定應(yīng)用服務(wù)的端口。

點(diǎn)擊“Run”運(yùn)行應(yīng)用程序。在Eclipse控制臺(tái)看到“osgi> Hello World!!”后,打開(kāi)瀏覽器在地址輸入http://localhost:8080/demo/hello.html進(jìn)行測(cè)試,當(dāng)您看到如下結(jié)果時(shí)那就忘該恭喜你了,一個(gè)WEB應(yīng)用就這樣搭建成功了!


相關(guān)案例查看更多