<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    2008年1月15日

     

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

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

    比較好的中文學習資料:http://www.javaeye.com/topic/22071

    比較好的英文學習資料: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.tkk7.com/bluedavy,看的我如癡如醉啊,哈哈

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

    2008年1月14日

     

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

    由于我是利用Javaweb方面的東西,所以我們先學習一下如何開發一個web application

    先從理論上武裝一下自己,理解普通的web applicationLotus Expeditor web application有什么區別。定位于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呢?這個就說來話長了,等我們羽翼豐滿了以后,在具體討論這個問題吧,我們還是先實現一個定位于Lotus Expeditor平臺的Web Application

    首先需要創建一個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)擴展(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標準標記庫(JSTL)(com.ibm.pvc.servlet.jsp.jstl)Servlet API(com.ibm.pvc.servlet)Web Application服務(org.osgi.service.webapplication)Web Application兼容性(com.ibm.osg.servlet,com.ibm.osg.webapp)Web Container(com.ibm.pvc.webcontainer) Web容器-JSP編譯器網橋,可靠性,可用性和可維護性(RAS)(com.ibm.pvc.ras),這些組件都是干什么用的呢?說實話,我也一頭霧水,先暫時不管,我們點擊Finish完成工程的創建。

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


     

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

    OSGI Bundle概述

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

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

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

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

    STARTING-bundle正式運行的一個臨時狀態

    ACTIVE-bundle正在運行

    STOPPING-bundle的另一個臨時狀態

    UNINSTALLED-bundle不再存在于框架中

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

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

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

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

    上面說了這么多,總體意思就是說MANIFEST.MF是區分普通Web ApplicationOSGI Bundle的標志,而一個Client Services web application就需要含有一個plugin.xml。下面列出了Client Services web application和標準的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 有一個包含了擴展點的 plugin.xml文件,利用這個文件可以簡單地啟動Web application。

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

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

    我們只是從理論的高度看了一下Client Services Web Application,是不是有點恐高?沒關系,讓我們具體實踐一下。在WebContent文件夾下創建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文件已經創建好,先在服務器上運行看看效果如何?右鍵點擊HelloWorld工程,Run As-Run on Server,選擇剛才Client Services v6.1,直接finish就可以了。

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


     

    回到Eclipse,我們發現Eclipse打開了我們剛才創建的index.jsp,如下圖:


     

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



     

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

     

    擴充如下代碼,最終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"/一定要對應。

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


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

    2008年1月13日

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

    我們已經完成了Lotus Expeditor Client的安裝,下一步需要進行實際的開發了。

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

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



     

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



       

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


     

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



     

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


     

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

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

     

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



     

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


     
     

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




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

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


     

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


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

    2007年11月29日

         摘要:   閱讀全文

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

    主站蜘蛛池模板: 成人片黄网站色大片免费观看cn | 国产大片91精品免费观看不卡| 亚洲一级特黄大片在线观看| 亚洲sm另类一区二区三区| 成人性生交大片免费看无遮挡| 亚洲综合伊人制服丝袜美腿| 免费电影在线观看网站| 亚洲中文字幕久久精品无码A| 成人免费毛片观看| 性色av极品无码专区亚洲| 四虎永久免费网站免费观看| 偷自拍亚洲视频在线观看99| 亚洲国产精品自在拍在线播放| 一区二区三区视频免费| 亚洲精品无码久久久久去q | 成人午夜大片免费7777| 亚洲国产成人手机在线观看| 国产大片91精品免费观看男同| 午夜在线亚洲男人午在线| 亚洲国产成人久久精品99| 9久久免费国产精品特黄| 亚洲AV无码专区在线播放中文| 久久精品一区二区免费看| 亚洲人成电影网站| 国产精品酒店视频免费看| 国产高潮久久免费观看| 亚洲五月六月丁香激情| 精品久久久久国产免费| 人成午夜免费大片在线观看| 亚洲国产精品线在线观看| 69成人免费视频无码专区| 一个人免费观看www视频| 亚洲黄色网站视频| 国产精品无码素人福利免费| 国产一级黄片儿免费看| 亚洲午夜在线一区| 国产成人精品曰本亚洲79ren| 无码A级毛片免费视频内谢| 亚洲精品国产综合久久久久紧| 奇米影视亚洲春色| 日韩一区二区a片免费观看 |