成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

利用Oracle9i XML DB 來(lái)解決復(fù)雜編碼問(wèn)題

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