国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

建立和部署PowerBuilder組件

2024-07-21 02:10:24
字體:
來源:轉載
供稿:網友
建立和部署powerbuilder組件
(石驍騑 2001年07月20日 17:56)

一、開發組件
在介紹如何將pb組件部署到jaguar cts服務器之前,首先介紹一下如何利用powerbuilder 7開發一個組件。這一步非常重要,因為在這里要設定許多選項,而這些選項又最終直接影響到pb組件的部署工作。

pb開發的jaguar組件是具有一些特殊事件和屬性的特殊的pb非可視化對象(nvo)。這個對象除了要編寫代碼和在pb中設置一些屬性之外,在jaguar中還需要設定一些特殊的選項來控制組件的行為,而這些選項的設置即可通過手工設定也可通過pb的jaguar 組件向導來設定其中的一大部分。

采用jaguar組件向導創建組件,需要回答一系列的問題和設置一些選項,對這些設置和選項的理解是非常重要的,因為它直接影響部署到jaguar服務器中組件的行為。

利用powerbuilder創建jaguar組件時一般都采用juguar組件向導,該向導引導你完成一系列的設置來創建一個新的jaguar組件。在向導引導過程中輸入的值最后將影響到組件的事件、屬性和部署選項。所以在該向導過程中,必須注意這些選項和屬性的值。下面我們就開始一步步利用組件向導來創建一個jaguar組件,對涉及到的所有選項和屬性作詳細介紹。

選擇“file | new” 菜單或者直接在工具條中選擇“new”。powerbuilder 彈出一個由許多標簽組成的對話框。選擇“start wizards”標簽,再選擇“jaguar component”,然后點擊“ok”按鈕,jaguar組件向導啟動。在第一次創建組件時需要上述步驟,一旦利用該向導創建了一個組件應用,以后只需要在“object”標簽下創建另外的組件。

向導的第一個屏幕首先介紹了該向導的功能和如何通過客戶端應用來存取jaugar對象。點擊"next"按鈕,出現下一個對話框,這個對話框總結了向導需要的所有信息和將要回答的問題,點擊"next"按鈕,出現如圖1所示對話框。該對話框提示用戶輸入應用的名稱和庫路徑。在這里可以取一個能反映組件功能的應用名稱,也可以選用默認的名稱“genapp”,最后確認庫路徑,并點擊"next"按鈕。下一個屏幕顯示庫路徑,如果需要的話,可以改變它,點擊"next"按鈕,彈出如圖2所示對話框。該對話框要求用戶輸入powerbuilder的非可視化組件的名稱和描述信息,系統默認為應用名稱前加"n_"前綴。點擊"next"按鈕,彈出下一個對話框。該對話框要求用戶輸入jaguar組件名,這個名稱默認為和powerbuilder對象名相同但用戶也可以改變它。點擊"next"按鈕,下一個屏幕要求用戶輸入連接jaguar服務器的一些信息,如圖3所示。當部署組件到jaguar服務器時,powerbuilder需要這些信息來取得和服務器的連接。如果jaguar組件服務器運行在本地機器上,則在“server name”處填入localhost,如果組件服務器沒有運行在本地,則需要輸入服務器的的名稱或其ip地址。端口號為在jaguar服務器創建時指定的監聽器端口號,確省為9000。登陸賬號默認為jagadmin,口令默認為空(jaguar服務器管理員可以更改默認的登陸賬號和口令),鼠標單擊"next"按鈕。



圖1 指定新的應用名稱和庫

圖2 指定組件名和描述信息

圖3 指定服務器信息

下一個屏幕要求用戶為組件指定一個包名。什么是包?一般來說,一個包就是一組功能相關的對象的集合。所有部署到jaguar服務器的組件都需要一個包名。在這里可以手工輸入一個包名,也可以取jaguar服務器上已經存在的一個包名,點擊"next"按鈕。

下一個屏幕要求用戶選擇組件的類型。這里有三種類型供選擇:標準型(一般組件)、共享型(共享實例)和服務型(在服務器啟動時裝入,為jaguar客戶端或組件執行后臺服務)。一個共享組件的“sharing”屬性被設置為true。服務組件不僅被標志為共享,而且還有另外一些方法,如運行,啟動和停止等。選擇需要的組件類型,點擊“next”按鈕。

下一個屏幕用來指定實例緩沖選項,如圖4所示。在選擇“不支持(not supported)”情況下,可以通過在組件的“canbepooled” 事件中添加代碼來改變組件實例為支持緩沖。也可以通過在jaguar manager中改變組件的緩沖屬性。選擇所需要的緩沖屬性,點擊“next”按鈕。

圖4 指定組件的實例緩沖選項

下一個屏幕用來指定事務支持(transaction support)和自動分界/自動清除(auto demarcation/deactivation)選項。這兩個屬性也可以通過jaugar manager來直接設定。下面對幾種事務分別作一下解釋。
“not supported(不支持)”:指組件在事務范圍之外執行; “supports transaction(支持)”:指如果有一個事務在執行,則該組件在這個事務中執行,否則組件將在事務之外執行。 “requires transaction(請求事務)”:指組件將一直在一個事務內部執行。如果客戶端向一個組件發出服務請求時,則一個新的事務開始。如果一個組件被另外一個已經運行在一個事務中組件請求,則該組件將使用另外一個組件的事務。 “requires new transaction(請求新事務)”:指一個組件初始化后,一個新的事務開始啟動。
如果選中“自動分界/清除”選項則指該組件在它的任何一個方法被調用后自動使之不活動;否則,組件直到收到一個 setabort 或者 setcomplete 調用才使之不活動。選擇完畢后,點擊“next”按鈕,下一個屏幕用來指定界面選項,這些選項容許你修改組件界面的方式。在這里強調一點,除非你對組件有特殊的需求或者對這些選項具有非常清楚的理解,一般建議不要改變這些選項,保持默認值。點擊“next”按鈕。

下一個屏幕用來選擇遠程調試(remote debugging)和現場編輯(live editing)。遠程調試選項在開發期間是非常有用的,但是到了最終釋放代碼時,不要選中該選項,否則,用戶可以看到你的組件代碼。現場編輯指powerbuilder每次在對組件畫板作過改變保存后都自動部署組件到jaguar。選擇需要的選項,點擊“next”按鈕。

下面將進行pbd生成的一些選項選擇。如果選擇第一項,則powerbuilder將從所有庫列表中的pbd創建一個單一合并的pbd,然后還需要為這個合并的pbd另外指定一些選項。如果在組件的數據窗口中有一些動態引用(如用到了數據窗口),則應該選中第二個選項(include unreferenced objects)。輸入一個合并后的pbd的名稱和使用的資源文件pbr的名字,這個資源文件能使組件具有和通常意義上的powerbuilder應用一樣的功能。點擊“next”按鈕。

最后,向導顯示出所有的選項并為這個組件生成一個“工作計劃(to_do)列表”,點擊“finish”按鈕,至此,該組件將被生成。
二、修改pb對象為組件
有時候需要將一個已經存在的pb對象升級為一個組件。這時就需要增加一些事件,還需要為部署該組件創建一個工程。
1. 添加事件
將一個傳統的pb對象升級為一個jaguar組件,需要另外添加一些事件,包括 activate, deactivate 和可選的canbepooled事件。
activate – 該事件映射到“pbm_component_activate”。該事件代碼每次在組件被激活時執行。這里需要注意的是映射事件是“pbm_component_activate”而不是平常非常熟悉的pbm_activate。 deactivate – 該事件映射到“pbm_component_deactivate”。當組件不活動時激活該事件。 canbepooled –該事件映射到“pbm_component_canbepooled”。它用來程序控制組件的實例緩沖。返回1時,允許實例緩沖,返回0時,禁止實例緩沖。2. 創建一個部署工程
一旦將一個傳統意義上的powerbuilder對象升級為一個jaguar組件,還需要另外創建一個部署工程,在下一節中對其進行詳細討論。
三、部署組件的過程和選項
在客戶端應用程序使用組件之前,必須將該組件部署到一個應用服務器中。在powerbuilder 7中,可以利用pb和jaguar的集成特性,在pb中每次對組件進行修改保存后,直接將其部署到jaguar服務器中。這種特性在pb中被稱為現場調試(live editing),這在開發和測試環境中是非常有幫助的,但不能將其應用到實際應用環境中。
1. pb組件的組成powerbuilder pbds
一個部署過的powerbuilder組件具有許多的元素。第一個就是編譯過的pb代碼,存放在一個或者多個pbd中。在操作系統中必須要指定這些組件庫的路徑,這樣powerbuilder的 pbds才能夠被jaugar中的powerbuilder運行時間庫引擎存取。 idl
除了powerbuilder代碼以外,還需要一個界面描述,它在客戶端應用向服務器中的組件請求服務時使用。這些界面信息采用界面定義語言(idl)來描述。 resources
資源是組件動態應用需要的位圖或者數據窗口,這些資源保存在pbr文件中。
2. 部署過程

下面來看將一個powerbuilder組件部署到jaugar服務器上時,系統會進行那些操作。一般部署一個組件包括在jaguar知識庫(repository)中設置一些文件和屬性,這樣當一個客戶端應用請求時組件才可以被找到、定位和執行。這里需要注意的是最好不要手工操作jaguar知識庫中的文件,但是如果你對這些屬性文件了解較多,則可以直接編輯這些屬性文件,非常方便快捷。
jaguar知識庫(repository)
在jaguar cts目錄下,有一個文件夾叫“repository”。該目錄包括了所有部署到該服務器的pb組件的相關文件。java組件(.calss文件)的可執行代碼在jaguar cts 3.5/java/classes 目錄下,不在repository目錄下。
添加組件和包屬性到知識庫(repository)
每一個組件或者包都有一系列的相關屬性屬性文件。在repository目錄下包含了許多以“.props”為后綴的文件,這些文件保存了jaugar的安裝(包括server)、包和組件的各個方面的信息。在jaugar manager中看到的所有屬性就是這些.props文件。repository目錄是這樣組織的,每一個powerbuilder組件的屬性文件在包目錄下的組件目錄里面,包的屬性在包目錄下面的.props文件中。
添加powerbuilder代碼到repository
編譯過的powerbuilder代碼將被添加到知識庫repository目錄下的“components” 目錄。部署到jaugar的每一個包在componets目錄下都有一個子目錄,包中的每一個組件都有一個目錄存放在包目錄的下面。如果組件是powerbuilder組件,那么就會有一系列的以“c”開頭的目錄在components目錄下。
生成idl并且添加到repository
idl描述了一個組件是如何被客戶端應用調用的。在repository目錄下的idl目錄下,可以看到jaguar組件的idl。idl文件是以包為單位組織的,在idl目錄下每個包具有一個子目錄,里面包含了所有包中組件的idl文件。
關于“cookies”
每當一個powerbuilder組件被部署到jaguar服務器上時,它都被放置到了repository目錄下的一個新的目錄,這些目錄以c1開始順序命名,可以在repository目錄下的components目錄下看到這些目錄,其中每一個目錄都包含了編譯過的powerbuilder代碼。jaguar對這些目錄的管理是通過組件的屬性-“com.sybase.jaguar.component.pb.cookie”進行的,該屬性的值就是目前使用的“cookie”,也就是子目錄號。我們可以刪除所有數字比它小的目錄而不會對組件構成任何影響,這樣可以釋放許多的磁盤空間出來。
三、jaugar工程向導1. 創建一個jaugar工程
創建一個組件后,還需要一個jaguar工程來部署組件。創建一個jaguar工程的步驟和前面談到的創建一個組件的過程很相似。在powerbuilder中選擇“file | new” ,然后在“projects”標簽中選擇“jaguar component wizard”,和組件向導不同的是在工程(projects)標簽,而組件向導則在對象(objects)標簽。

建立一個部署工程以后,就可以在powerbuilder中打開這個工程選擇“design |build project”菜單來部署組件到jaguar服務器。
2. 現場編輯
在第一次利用組件向導創建一個組件時,可以選擇“live editing”這個選項。然而,如果在第一次創建組件時沒有選擇該選項,那么以后還有沒有辦法選擇該選項呢?回答當然是有,可以通過下面的步驟來使該功能有效。
在jaguar工程中選擇組件; 在powerbuilder中打開組件。在屬性面版選擇該工程,就可以修改該選項。
3. 部署powerbuiler組件到另外的服務器

在實際開發中,經常遇到這樣的問題,利用開發版部署powerbuiler組件到另外的服務器時,經常出現不能部署的問題。主要原因可能是:

1. 在powerbuilder開發環境中想存取商業服務器。

“現場編輯”選項在開發環境是一個非常有用的選項,但它不適于在商業服務器上工作。設想一下,如果每一個開發者對商業服務器均有部署存取權限,那么其中任何一個人的一個小小錯誤都將導致非常嚴重后果。

2. 遠程地址

另外一種情況就是將組件部署到不是本機的遠程網絡服務器上,這意味著目前的pb開發環境沒有對目標遠程服務器的存取權限。
四、包部署
相對于從powerbuilder部署組件,還有一種部署組件的方法就是包部署,也就是從開發服務器上將包導出到一個文件,然后再將其導入到目標服務器上。
1. 利用jaugar manager創建導出文檔
jaguar manager提供了將一個包導出到文件的功能,該文件包含了部署組件所有有關的文件和信息,并以一個 .jar (java 文檔)的文件格式保存。下面是具體步驟:
啟動jaguar服務器管理器并登陸。默認登陸用戶為jagadmin,口令為空,如果jaguar服務器運行在本地開發機器上,則主機名(hostname)為localhost,否則為遠端的機器名或ip地址,默認端口號為9000。 在jaugar manager左邊的樹型目錄下,在server/jaguar/installed package目錄下,可以看到許多包名,其中包括從pb組件工程中提交的包,找到包含需要導出組件的包。 在包目錄上點擊鼠標右鍵,選擇“export package”,彈出一個導出對話框。選擇“export as jaguar package jar file”,然后選擇將該包導出的路徑,最后點擊“export”按鈕。在你選擇的目錄下,jaguar manager將創建一個名為“包名.jar”的文件,包名為jaguar manager中顯示的包名稱。2. 安裝組件
一旦創建了一個名為jar的文件,就可以將其安裝到任何一個jaguar服務器上。安裝方法如下:
拷貝jar文件到目標jaguar服務器可以存取到的目錄; 登陸jaguar manager,在左邊的樹型視圖中找到“installed packages”目錄; 在“installed packages”目錄上,點擊鼠標右鍵,選擇“import”; 在彈出的對話框中選擇“deploy from jaguar package jar file”,找到需要導入的jar文件,最后點擊“ok”按鈕。所選擇的jar文件就被導入到目標jaguar服務器上。五、同步部署組件
前面介紹的包部署的方法是一個非常簡單和有效的方法,然而它卻存在一些缺點,如在一些大規模部署的情況下,就顯得不是很適用,非常的煩瑣。在這種大規模部署的情況下,另外的一種稱之為同步(synchronization)的方法就顯示出了它的優越性。同步即可以在集群(cluster)和服務器(server)層面,也可以在包和組件層面上操作。

同步可以在任何可以連接到的服務器上進行,也可以在一個集群的服務器上執行。集群同步必須在集群的主服務器上進行。下面是同步部署組件的步驟:
啟動jaguar manager,連接到主服務器。這里主服務器的概念就是組件和包所在的服務器; 在“servers”目錄下,選擇一個服務器、包或者一個組件,然后在其上鼠標右鍵選擇“synchronize”; 輸入連接到的遠端服務器或者集群的用戶名和口令。這里需要注意的是如果要連接到多個服務器或者多個服務器在一個集群上,所有的服務器必須具有同樣的用戶名和口令; 如果要同步到一個集群的所有服務器上,點擊“cluster”選擇框,在旁邊的編輯框中輸入集群名稱。注意,這些操作必須是在連接到集群的主服務器上進行。 在“servers”編輯框中輸入需要同步的目標服務器的地址(url或者ip地址); 在“options”頁面下,有一些選擇框,下面分別一一對其進行解釋。“all cluster files”:復制所有的集群屬性到目標服務器上;. “all package files”:復制所有的源服務器上的包文件到目標服務器。這包括所有的idl文件、屬性文件、執行文件(如pbd文件)和組件定義文件等; “all servlet files”:復制所有的servlets到遠程目標服務器上; “verbose” :在同步操作時產生詳細的信息; “new primary”:在集群中指定源服務器為主服務器。在選擇該選項時要非常小心,選定該選項后,更改的所有配置將開始起作用; “new version”:當同步一個集群時指定一個新的集群版本號; “refresh”:在同步的最后執行刷新操作。 “restart”:在同步完成以后重新啟動遠程服務器。“then wait”對話框中填入的時間指主服務器等待遠程服務器重新啟動的時間。 選擇了合適的選項后,鼠標單擊“start sync” 按鈕,開始執行同步操作。結論
深刻理解部署jaguar組件的各種選項是非常重要的。在powerbuilder開發環境下,可以利用“live editing”或者從部署工程中部署組件。在商業環境下,不能從開發環境中部署組件,這時可以選擇導出/導出包的jar文件的方法或者同步的辦法來完成。

最大的網站源碼資源下載站,

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌乐县| 南安市| 揭东县| 绥化市| 黄冈市| 庆安县| 邮箱| 德江县| 黄大仙区| 荥阳市| 彩票| 永平县| 大宁县| 桐乡市| 沁水县| 淮南市| 武城县| 定结县| 当阳市| 鹤峰县| 浦江县| 岳普湖县| 古交市| 衡山县| 元朗区| 柳河县| 玉溪市| 金坛市| 江门市| 聂荣县| 彝良县| 卢龙县| 白水县| 达孜县| 民权县| 通州区| 林周县| 长葛市| 烟台市| 平远县| 台江县|