文章詳情頁
利用Oracle9i XML DB 來解決復(fù)雜編碼問題
瀏覽:56日期:2023-11-26 08:53:28
開發(fā)互聯(lián)網(wǎng)應(yīng)用程序是非常復(fù)雜的:你不僅要實(shí)現(xiàn)定義應(yīng)用程序的行為和邏輯,還必須在分布式環(huán)境下將多種產(chǎn)品、技術(shù)層次和標(biāo)準(zhǔn)結(jié)合在一起。示例代碼展示了多種解決互聯(lián)網(wǎng)應(yīng)用程序開發(fā)的方法。 例如,考慮一個(gè)幾乎任何希望進(jìn)行在線銷售的Web站點(diǎn)(PayPal等類似的)都必須實(shí)現(xiàn)的特性:信用卡校驗(yàn)。主要包括如何驗(yàn)證用戶、聯(lián)系驗(yàn)證公司并安全地進(jìn)行交易處理--所有這些都將一個(gè)基于Web的瘦客戶端、一個(gè)數(shù)據(jù)庫、一個(gè)應(yīng)用服務(wù)器和獨(dú)立驗(yàn)證公司提供的功能之間的交互很好地結(jié)合起來。 OTN提供了示例應(yīng)用程序,使用不同的產(chǎn)品、技術(shù)和標(biāo)準(zhǔn)組合來解決這樣復(fù)雜的問題。一些示例采用了它們自己的驗(yàn)證機(jī)制;另一些則利用了內(nèi)置到Oracle 9i應(yīng)用服務(wù)器(Oracle 9iAS)中的單一登錄(Single Sign-On , SSO)特性。OTN還提供了一個(gè)利用了Oracle 9i數(shù)據(jù)庫的XML DB特性的后端應(yīng)用程序示例。 Web服務(wù)這一技術(shù)被用于每個(gè)信用卡示例應(yīng)用中。通過使用Web服務(wù),OTN開發(fā)人員可以有效地將需要的功能內(nèi)置到分立的組件中。這種方法實(shí)現(xiàn)了應(yīng)用程序的模塊化而不是整體化,因此更加靈活且更易于維護(hù)。開發(fā)人員可以在不影響主應(yīng)用程序的情況下改變組件的實(shí)施,或者只需修改幾行代碼就可以使用不同的組件。因此,Web服務(wù)可以在應(yīng)用程序之間被共享和重復(fù)使用,并且在時(shí)機(jī)成熟時(shí)可以輕松地被移植到企業(yè)級(jí)網(wǎng)格計(jì)算環(huán)境。 OTN會(huì)員可以下載以下示例代碼(和OTN上任何其他示例代碼),研究它們,根據(jù)自己的開發(fā)需求混合和搭配使用這些解決方案。 使用J2EE設(shè)計(jì)模式的VSM 虛擬購物商場(chǎng)(Virtual Shopping Mall,VSM)示例應(yīng)用程序使廠商能夠建立在線商店,客戶可以瀏覽所有商店,系統(tǒng)治理員則可以批準(zhǔn)和拒絕新商店的申請(qǐng)并維護(hù)商店類別列表。為了構(gòu)建VSM,OTN開發(fā)人員實(shí)現(xiàn)了幾個(gè)有名的J2EE設(shè)計(jì)模式,包括Session Fa?ade和模型-視圖-控制器(Model-View-Controller, MVC)。 VSM指南系列的一個(gè)模塊描述了OTN開發(fā)人員如何通過Web服務(wù)重復(fù)使用一個(gè)軟件組件。VSM的信用卡服務(wù)組件通過三個(gè)Java文件來實(shí)現(xiàn):一個(gè)定義了該組件方法的接口(CCServices),一個(gè)實(shí)現(xiàn)了該接口的類(CCServicesImpl),以及另一個(gè)負(fù)責(zé)處理信用卡校驗(yàn)失敗時(shí)拋出的異常的類(CCException)。要害操作--校驗(yàn)信用卡號(hào)由方法CCServicesImpl.validateCard來執(zhí)行,該方法使用了LUHN算法(也被稱為模10算法)。銀行、企業(yè)和其他實(shí)體現(xiàn)在在公共領(lǐng)域中廣泛采用了這一規(guī)則來生成和校驗(yàn)信用卡、賬戶和身份證號(hào)碼。 使用框架的VSM BC4J-VSM示例應(yīng)用程序提供與VSM相同的功能性,但它是使用用于構(gòu)建組件和基于組件的應(yīng)用程序的Oracle框架Oracle 9i JDeveloper Business Components for Java (BC4J)來實(shí)現(xiàn)的。BC4J提供了現(xiàn)成的J2EE設(shè)計(jì)模式的實(shí)施,否則你將需要手工編寫代碼。在BC4J-VSM中,信用卡服務(wù)組件通過多個(gè)文件實(shí)現(xiàn)。然而,OTN開發(fā)人員只需創(chuàng)建并填寫一個(gè)表并為一個(gè)Java類編寫一個(gè)方法,JDeveloper就可以生成所有需要的東西。 表CC_MASTER是通過腳本webstore.sql創(chuàng)建和填寫的,如下所示: CREATE TABLE cc_master ( provider VARCHAR2(10), ccstart NUMBER(5));INSERT INTO cc_master VALUES('VISA',11111);INSERT INTO cc_master VALUES('MASTER',22222);INSERT INTO cc_master VALUES('DINERS',33333);INSERT INTO cc_master VALUES('AMEX',44444);接下來,OTN開發(fā)人員使用JDeveloper向?qū)韯?chuàng)建一個(gè)基于CC_MASTER表的實(shí)體對(duì)象(CcMaster)。這些向?qū)н€為相應(yīng)的視圖對(duì)象(CreditCardValidationView)和視圖對(duì)象實(shí)現(xiàn)(CreditCardValidationViewImpl)生成代碼。 要害操作--校驗(yàn)信用卡號(hào)由方法CreditCardValidationViewImpl.validateCard來執(zhí)行。在這個(gè)示例應(yīng)用程序中,并不是像在商業(yè)應(yīng)用程序中那樣對(duì)信用卡號(hào)進(jìn)行校驗(yàn)。然而,校驗(yàn)代碼卻保證了用戶輸入數(shù)字的正確位數(shù)等。 在線產(chǎn)品商店和Web服務(wù)安全性 在線產(chǎn)品商店(Online ProdUCt Store)是另一個(gè)示例應(yīng)用程序,它顯示了如何確保Web服務(wù)的安全。有兩個(gè)方法可以實(shí)現(xiàn)這個(gè)目標(biāo): XML級(jí)別的安全性: 選項(xiàng)包括XML加密、XML數(shù)字簽名API、XKMS(XML密匙治理規(guī)范)和SAML(安全性聲明標(biāo)記語言,Security Assertion Markup Language)。 傳輸級(jí)別的安全性:通過確保Web服務(wù)通信所使用的網(wǎng)絡(luò)協(xié)議的安全來實(shí)現(xiàn)。SSL是業(yè)界認(rèn)可的通過TCP/IP進(jìn)行安全加密通信的標(biāo)準(zhǔn)協(xié)議。在這個(gè)模型中,Web服務(wù)客戶端使用SSL來打開一個(gè)到Web服務(wù)的安全套接口。然后,客戶端在這個(gè)安全套接口上通過HTTPS發(fā)送和接收SOAP消息。SSL實(shí)現(xiàn)通過對(duì)套接口上所有的網(wǎng)絡(luò)通信進(jìn)行加密而確保了私密性。SSL還可以利用PKI基礎(chǔ)架構(gòu)來驗(yàn)證提供給客戶端的Web服務(wù)。 因?yàn)樵赬ML級(jí)別實(shí)現(xiàn)安全性的標(biāo)準(zhǔn)仍然在制定當(dāng)中,所以O(shè)TN開發(fā)人員選擇使用SSL和PKI基礎(chǔ)架構(gòu)在傳輸級(jí)別實(shí)現(xiàn)安全性。Oracle 9iAS利用基于Apache的Oracle HTTP 服務(wù)器、Oracle 9iAS Containers for J2EE(OC4J)和Oracle 9iAS 門戶為構(gòu)建和部署Web應(yīng)用程序提供了一個(gè)堅(jiān)實(shí)的框架。這些產(chǎn)品都使用了由Oracle 9iAS基礎(chǔ)架構(gòu)提供的高級(jí)安全功能性。 (Oracle 9iAS基礎(chǔ)架構(gòu)包括Oracle 9iAS 元數(shù)據(jù)信息庫、Oracle 互聯(lián)網(wǎng)目錄、Oracle 9iAS SSO和Oracle 治理服務(wù)器。) 通過提供正確的用戶名和密碼,在線產(chǎn)品商店的用戶可以查看產(chǎn)品目錄,并向購物車中添加產(chǎn)品。在為購買的產(chǎn)品付賬時(shí),用戶應(yīng)輸入信用卡號(hào),應(yīng)用程序就會(huì)通過SSL與信用卡Web服務(wù)建立聯(lián)系,從而說明如何安全地訪問一個(gè)Web服務(wù)。 在線產(chǎn)品商店和單一登錄 為了闡明另一種方法,一個(gè)獨(dú)立的在線商店模擬使用了Oracle 9iAS SSO來驗(yàn)證用戶。SSO使用戶只需注冊(cè)一次就可以登錄到Oracle 9iAS及其他Web應(yīng)用程序。這個(gè)示例應(yīng)用程序使用數(shù)字證書來注冊(cè)到通過JAZN被置于Oracle 9ias SSO服務(wù)器的保護(hù)之下的Web應(yīng)用程序。JAZN是Oracle對(duì)Java驗(yàn)證和授權(quán)服務(wù)(Java Authentication and Authorization Service ,JAAS)的實(shí)現(xiàn),JAAS則是使服務(wù)能夠?qū)τ脩暨M(jìn)行驗(yàn)證并授權(quán)他們使用應(yīng)用程序資源的Java包。 SSO服務(wù)器使用一個(gè)加密的SSL通道為客戶端Web瀏覽器提供一個(gè)cookie,應(yīng)用程序可以使用這個(gè)cookie對(duì)用戶進(jìn)行驗(yàn)證,而無需用戶登錄。一旦用戶通過了驗(yàn)證,授權(quán)過程就會(huì)啟動(dòng),為用戶授予訪問特權(quán)資源的權(quán)限,如在數(shù)據(jù)庫中插入行或?qū)ξ募M(jìn)行寫操作。 這個(gè)示例提供了一個(gè)要求用戶登錄到在線辦公用品商店的Web應(yīng)用程序。訪問該應(yīng)用程序主頁URL的用戶被重定向到SSO服務(wù)器,由JAAS進(jìn)行驗(yàn)證。這個(gè)示例使用數(shù)字證書對(duì)用戶進(jìn)行驗(yàn)證,用戶無需提供用戶名和密碼就可以登錄。 成功登錄后,用戶可以購買產(chǎn)品并通過信用卡支付。這個(gè)示例使用一個(gè)信用卡Web服務(wù)來校驗(yàn)用戶的信用卡號(hào)。它還確認(rèn)用戶擁有足夠的資金額來購買產(chǎn)品。Web客戶端通過SSL通道與Web服務(wù)通信,并使用數(shù)字證書來驗(yàn)證Web服務(wù)。 使用XML DB的信用卡支付網(wǎng)關(guān) 信用卡支付網(wǎng)關(guān)示例應(yīng)用程序使用了Oracle 9i XML DB (在Oracle 9i數(shù)據(jù)庫第2版及更高版本中提供)的特性來模擬信用卡公司在互聯(lián)網(wǎng)上提供的一些后端功能。這個(gè)應(yīng)用程序在XMLType表中以XML文檔的方式治理客戶簡(jiǎn)檔、賬戶余額和信用卡持有者及商家的其他數(shù)據(jù),通過模擬實(shí)際商店中的信用卡采購而生成購買請(qǐng)求。 對(duì)于每次購買,經(jīng)銷商都會(huì)使用一個(gè)客戶端應(yīng)用程序來提交具體數(shù)據(jù),包括信用卡號(hào)和金額以及商家的賬號(hào)。客戶端調(diào)用Web服務(wù),由Web服務(wù)根據(jù)信用卡持有者的賬號(hào)對(duì)請(qǐng)求進(jìn)行校驗(yàn)并返回結(jié)果。 Web服務(wù)是部署到OC4J上的用Java編寫的無狀態(tài)、遠(yuǎn)程過程調(diào)用形式的Web服務(wù)。客戶端Java類通過jsp接收輸入數(shù)據(jù)并調(diào)用Web服務(wù)的方法。然后,Web服務(wù)調(diào)用一個(gè)PL/SQL過程來校驗(yàn)請(qǐng)求,并將來自PL/SQL過程的結(jié)果回復(fù)給客戶端。該應(yīng)用程序?qū)⒑戏ǖ慕灰状鎯?chǔ)在事務(wù)處理表CPG_TRANSACTIONS中。
標(biāo)簽:
Oracle
數(shù)據(jù)庫
排行榜
