posts - 4, comments - 2, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          2007年11月29日

           

          前面已經(jīng)介紹過一些OSGi的東西,不過說實話,我自己還是一頭霧水,不過我也清晰的認(rèn)識到,Lotus Expeditor Client的基礎(chǔ)就是OSGi,基于OSGi,你可以整合更多的框架,所以,我們一起來學(xué)習(xí)OSGi吧,基礎(chǔ)打牢了,我們的大廈就會蓋得越高。

          這里給出一些學(xué)習(xí)OSGi的資料,OK,五天以后見了,一起來學(xué)習(xí)吧,哈哈。

          比較好的中文學(xué)習(xí)資料:http://www.javaeye.com/topic/22071

          比較好的英文學(xué)習(xí)資料:http://neilbartlett.name/blog/osgi-articles/

          DW上的文章搜索:http://www-128.ibm.com/developerworks/search/searchResults.jsp?searchType=1&searchSite=dWChina&pageLang=zh&langEncoding=UTF8&searchScope=dW&query=osgi&Search.x=26&Search.y=5

          重點推薦OSGi大牛的blog:http://www.aygfsteel.com/bluedavy,看的我如癡如醉啊,哈哈

          posted @ 2008-01-15 13:32 EricFan 閱讀(323) | 評論 (0)編輯 收藏

           

          也許每本編程書籍都已Hello World為開頭不是沒有原因的,因為Hello World以淺顯的編程技巧可以迅速地讓開發(fā)者上手,所以,我決定還是落入俗套吧,這次我們來講如何實現(xiàn)一個Hello World

          由于我是利用Javaweb方面的東西,所以我們先學(xué)習(xí)一下如何開發(fā)一個web application

          先從理論上武裝一下自己,理解普通的web applicationLotus Expeditor web application有什么區(qū)別。定位于Lotus Expeditor平臺的Web Application稱為Client Services web application因為Lotus Expeditor平臺的組件被稱為bundles,所以一個定位于此平臺的Web Application也被稱為一個Web Application Bundle或者WABClient Services web application 和運行在 WAS(Websphere Application Server) 或者 tomcat 下的 web application一個主要的不同就是Client Services web application必須也是一個有效的OSGI Bundle。那么什么是OSGI呢?這個就說來話長了,等我們羽翼豐滿了以后,在具體討論這個問題吧,我們還是先實現(xiàn)一個定位于Lotus Expeditor平臺的Web Application

          首先需要創(chuàng)建一個Web application,打開eclipse,File-New-Project, 選擇Client Services Web 項目,如下圖:

           
           

          我們把這個工程叫做 HelloWorld 吧,如下圖:


           

          然后一路Next,直到如下頁面:



           

          我們看看一個普通的Lotus Expeditorweb application都用到了哪些包,有Apache MyFaces(org.apache.myfaces) Eclipse核心組件(com.ibm.jxesupport.initializer,org.eclipse.core.contenttype,org.eclipse.core.jobs,org.eclipse.core.runtime,org.eclipse.equinox.common,org.eclipse.equinox.event,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.osgi,org.eclipse.osgi.services,org.eclipse.osgi.util)IBM JavaServer Faces(JSF)擴(kuò)展(com.ibm.rcp.servlet.jsf.ext,com.ibm.rcp.servlet.jsf.ext.impl)JavaServer Pages(JSP) API(com.ibm.pvc.servlet.jsp)JavaServer 面窗口小部件庫(JWL)(com.ibm.rcp.servlet.jwl)JSP標(biāo)準(zhǔn)標(biāo)記庫(JSTL)(com.ibm.pvc.servlet.jsp.jstl)Servlet API(com.ibm.pvc.servlet)Web Application服務(wù)(org.osgi.service.webapplication)Web Application兼容性(com.ibm.osg.servlet,com.ibm.osg.webapp)Web Container(com.ibm.pvc.webcontainer) Web容器-JSP編譯器網(wǎng)橋,可靠性,可用性和可維護(hù)性(RAS)(com.ibm.pvc.ras),這些組件都是干什么用的呢?說實話,我也一頭霧水,先暫時不管,我們點擊Finish完成工程的創(chuàng)建。

          讓我們看看新建的工程和普通的Web Application的目錄結(jié)構(gòu)有什么不同,如下圖:


           

          Lotus ExpeditorWeb Application相比普通的Web Application在整體結(jié)構(gòu)上基本是沒有什么區(qū)別的,主要是多出了plugin.xmlMETA-INF/MANIFEST.MF兩個文件。我按照我目前的理解先說說這兩個文件,說之前就不得不提到OSGI了,其實我很早就聽說了OSGI,也對它的架構(gòu)和設(shè)計思想有一些了解,只不過從來沒有自己動手實踐過,所以也是一知半解,只知道個概念而已。好,我們下面就說說OSGI

          OSGI Bundle概述

          Bundles是含有包含特定頭信息的manifestjar文件,這些頭信息描述了bundle并且列出了bundle的依賴性,比如說bundle需要的包和服務(wù)。Manifest文件中的描述信息將bundle和其他的jar文件區(qū)分開。非bundlejar文件的manifest文件常常包含了好少的信息。但是,bundlemanifest文件通常包含了描述信息,比如說bundle的名字,版本以及此bundle需要的包和服務(wù)的列表。

          框架管理bundle的生命周期,bundle的生命周期分為:

          INSTALLED-bundle已經(jīng)安裝,但是該bundle的依賴性還沒有被完全解決。

          RESOLVED-bundle的狀態(tài)是installed,并且已經(jīng)解決了依賴性問題,但是該bundle并沒有被運行。如果一個bundle已經(jīng)啟動,并且所有的依賴性問題已經(jīng)解決,那么該bundle就會跳過RESOLVED狀態(tài)。

          STARTING-bundle正式運行的一個臨時狀態(tài)

          ACTIVE-bundle正在運行

          STOPPING-bundle的另一個臨時狀態(tài)

          UNINSTALLED-bundle不再存在于框架中

          每個bundle都必須包含一個manifest文件。Bundlemanifest文件包含框架需要正確安裝的數(shù)據(jù)和激活的bundleLegacy Eclipse bundles 能夠在plugin.xml文件中提供一些manifest的信息,但是我們建議使用META-INF/MANIFEST.MF文件來記錄manifeset信息。

          注意:plugin.xml可以包含類似的信息,但是,plugin.xml也包含了擴(kuò)展和擴(kuò)展點。

          如果一個bundle僅僅包含了一個plugin.xml,Eclipse平臺在啟動時將生成一個等價的manifest.mf。當(dāng)你在manifest文件中指定數(shù)據(jù)的時候,你必須使用OSGI標(biāo)準(zhǔn)中定義的文件頭。你可以使用用戶定義的文件頭,但是,框架將會忽略任何它不能夠理解的文件頭。

          MANIFEST.MF文件位于bundle工程的META-INF目錄下。Plugin.xml文件位于根目錄下。

          上面說了這么多,總體意思就是說MANIFEST.MF是區(qū)分普通Web ApplicationOSGI Bundle的標(biāo)志,而一個Client Services web application就需要含有一個plugin.xml。下面列出了Client Services web application和標(biāo)準(zhǔn)的web application的不同之處:

          1The Lotus Expeditor platform 不支持通過EAR部署Enterprise Application。Web Application是被直接部署到運行時的(后面這句話不太理解。。。)

          2Client Services web application有一個manifest文件, 位于META-INF/MANIFEST.MF, 它包含了引用包的信息以及bundel依賴性的信息。

          3,Client Services web application 有一個包含了擴(kuò)展點的 plugin.xml文件,利用這個文件可以簡單地啟動Web application。

          4,Client Services web application 含有記錄了額外部署信息的wab.properties文件。 這個文件位于 Webcontent /WEB-INF文件夾。

          5,JSP文件在作為WAB部署到運行時前被編譯成相對應(yīng)的Servlet

          我們只是從理論的高度看了一下Client Services Web Application,是不是有點恐高?沒關(guān)系,讓我們具體實踐一下。在WebContent文件夾下創(chuàng)建index.jsp,如下圖:



           

          JSP源代碼如下:

          <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
              pageEncoding
          ="ISO-8859-1"
          %>
          <!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=ISO-8859-1">
          <title>HelloWorld</title>
          </head>
          <body>
          HelloWorld
          </body>
          </html>
           

          JSP文件已經(jīng)創(chuàng)建好,先在服務(wù)器上運行看看效果如何?右鍵點擊HelloWorld工程,Run As-Run on Server,選擇剛才Client Services v6.1,直接finish就可以了。

          在彈出的Lotus Expeditor Client的編輯窗口中點擊打開菜單,我們看到菜單項并沒有發(fā)生什么變化,如下圖:


           

          回到Eclipse,我們發(fā)現(xiàn)Eclipse打開了我們剛才創(chuàng)建的index.jsp,如下圖:


           

          說明index.jsp創(chuàng)建成功了,我們還需要將這個HelloWorld添加到Lotus Expeditor的菜單項中。那么我們到底應(yīng)該怎么做呢?前面說過了,Client Services web application區(qū)別于其他Web Application就是plugin.xml文件。打開這個文件看看吧,如下圖:



           

          這段代碼的含義就是將我們的HelloWorld注冊到Client Service中,這樣我們可以就可以在Client Server啟動時訪問到HelloWorld工程了。那么具體怎么在Lotus Expeditor Client的菜單項中添加我們的工程呢?

           

          擴(kuò)充如下代碼,最終plugin.xml文件如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <plugin>
          <extension point="com.ibm.pvc.webcontainer.application">
          <contextRoot>/HelloWorld</contextRoot>
          <contentLocation>WebContent</contentLocation>
          </extension>
          <extension id="helloworld" point="com.ibm.eswe.workbench.WctWebApplication">
               
          <WEBApplication DisplayName="你好">
                  
          <WebApplicationUrl local="true" secured="false" url="/HelloWorld"/>
               
          </WEBApplication>
          </extension>
          </plugin>

           

          我們再重新運行Hello World工程,看一看Lotus Expeditor Client的菜單項,是不是多出來了“你好”菜單?如下圖:



           

          注意:<contextRoot>/HelloWorld</contextRoot>url="/HelloWorld"/一定要對應(yīng)。

          我們的簡單東西到這里就全部介紹完了,下次來點高級的東西,我也是邊學(xué)邊寫,哈哈。


          posted @ 2008-01-14 16:16 EricFan 閱讀(642) | 評論 (0)編輯 收藏

          很久沒有更新了,其實是有時間,沒有什么客觀原因,有的只是主觀原因的懶,又要進(jìn)入開發(fā)的階段了,而且這次的重點還將是Lotus Expeditor,所以最近會更新的比較頻繁,哈哈,一起來學(xué)習(xí)吧。
           

          我們已經(jīng)完成了Lotus Expeditor Client的安裝,下一步需要進(jìn)行實際的開發(fā)了。

          我不想按照慣例搞一個HelloWorld出來,因為我擁有程序員的三個優(yōu)點:懶惰,急躁和傲慢,哈哈,所以,我決定找一找有沒有什么現(xiàn)成的東西可以直接拿來利用的。

          讓我們看一看,點擊Help-Welcome,如下圖:



           

          恩,我覺得地球儀的圖標(biāo)很好看啊(小時候是個地理迷),我決定點地球儀看看里面有什么東西。瞧瞧我們發(fā)現(xiàn)了什么?哦,這不正是我們現(xiàn)在迫切需要的東西嗎?



             

          讓我們點擊Lotus Expeditor Toolkit簡介進(jìn)去一窺究竟,彈出一個幫助菜單,全英文,看起來挺唬人的。


           

          好吧,你被打敗了,我會點英文,哈哈,我不緊不慢地打開Product overview,我的眼前一亮,using samples?多么爽啊。來來,讓我們打開Installing samples using Eclipse看看里面都有些什么sample啊。



           

          例子還真不少,由于我現(xiàn)在比較餓了,所以我決定選擇pizza Jsp Samples,點擊如下圖:


           

          好了,具體的執(zhí)行方法已經(jīng)用黑體字(其實都是黑體。。。)標(biāo)示的很清楚了,我這里就不像唐僧一樣嘮叨了。我們來在Lotus Expeditor Client上運行一下Pizza Samples吧,先爽一爽。

          右鍵點擊工程,選擇Run As-Run on Server,彈出如下對話框:

           

          我們直接點擊Finish看看效果如何,會出現(xiàn)Lotus Expeditor Client的編輯窗口,要求輸入密碼,初始密碼一定要記住哦,可以簡單地設(shè)定為1234567。輸入密碼后就進(jìn)入了Lotus Expeditor Client的主頁面,點擊左上角的藍(lán)色打開按鈕,如下圖:



           

          菜單項中,Web瀏覽器,訂單輸入富客戶機(jī)樣本,Enterprise Management Agent Servlet,訂單數(shù)據(jù)Web樣本是Lotus自帶的web application,我們重點看一下剛才創(chuàng)建的pizza Jsp,點擊最后一個樣本Pizza JSP Web Application”,出現(xiàn)頁面如下:


           
           

          說明我們之前的操作都成功了,什么?你沒出現(xiàn)這樣的畫面?人品問題,自己再按照前面的步驟重新做一遍。其實問題的關(guān)鍵并不是Lotus Expeditor,我們現(xiàn)在回過頭看看Eclipse里有什么變化




          Eclipse里面也打開了一個Web瀏覽器,具體地址http://localhost:8777/PizzaJSP/Pizza,我們打開IE訪問上面這個地址,發(fā)現(xiàn)是可以訪問的
           

          運行-cmd,打開命令行窗口,netstat -a 查看活動的端口,如下圖:


           

          我們可以看到8777端口是活動的,這個8777端口就是Client Service的默認(rèn)端口了,我們先不研究如何修改端口,Client Service的原理,那個先放到后面談。


          posted @ 2008-01-13 16:33 EricFan 閱讀(403) | 評論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-11-29 14:31 EricFan 閱讀(1262) | 評論 (2)編輯 收藏

          主站蜘蛛池模板: 永清县| 沿河| 元谋县| 繁昌县| 调兵山市| 清新县| 义马市| 阿城市| 都匀市| 宁武县| 宁津县| 富民县| 樟树市| 革吉县| 仁怀市| 北辰区| 娄烦县| 包头市| 嵊州市| 喀喇沁旗| 阿勒泰市| 泗阳县| 木里| 东莞市| 鄂托克前旗| 惠水县| 富锦市| 绥德县| 平远县| 新干县| 江永县| 阜宁县| 盘山县| 库车县| 会同县| 澜沧| 闸北区| 佛冈县| 翼城县| 大丰市| 东明县|