通過Jpetstore學(xué)習(xí)WSAD、ROSE、WEBSPHERE的基本用法(摘自Matrix)
版權(quán)申明:可以自由轉(zhuǎn)載,轉(zhuǎn)載務(wù)必保留以下說明和鏈接:
作者:moyunhe
來源:Matrix WebSphere與IBM 產(chǎn)品論壇
前言
雖然IBM放棄了WSAD、ROSE的繼續(xù)發(fā)展(取而代之的是Rational Software Architect),但作為一代經(jīng)典的ROSE,到今天仍然是系統(tǒng)建模的有力工具。
至于WSAD,我本人從4.0就開始使用,通過IBM的紅皮書的范例和教程,我逐步掌握了JSP、EJB、WebService等技術(shù)。
對(duì)于初學(xué)者來說,WSAD很容易上手:
安裝容易
中文菜單
本身帶Websphere測(cè)試環(huán)境、不需要復(fù)雜的配置
IBM紅皮書教程豐富的范例和教程
不需要額外的運(yùn)行環(huán)境和插件
并且,從WSAD轉(zhuǎn)向eclipse相當(dāng)容易,WSAD本身就是基于eclipse,界面和eclipse非常類似,大部分快捷鍵都和eclipse一致。
本文通過jpetstore(struts+ibatis)范例,介紹WSAD的基本用法、并用ROSE為jpetstore建立用例模型、數(shù)據(jù)模型、WEB模型等,最后將jpetstore改造成用spring+hibernate實(shí)現(xiàn),可作為WSAD、ROSE初學(xué)著的入門教程。
一、jpetstore簡(jiǎn)介
大家知道,SUN公司J2EE藍(lán)圖應(yīng)用程序,petstore寵物店有很多版本,jpetstore版本的詳細(xì)介紹可參見基于struts+spring+ibatis的輕量級(jí)J2EE開發(fā)。
我個(gè)人認(rèn)為,jpetstore版本的設(shè)計(jì)有許多值得學(xué)習(xí)的地方,建議大家仔細(xì)讀讀它的源代碼。
jpetstore的主要特點(diǎn):
所有的Action通過BeanAction實(shí)現(xiàn),相當(dāng)做了IOC,便于系統(tǒng)的擴(kuò)展(如增加BeforeAction和AfterAction的攔截器)。
通過LocalThread技術(shù),解決了Struts中Action線程不安全的問題。
ActionContext封裝了所有請(qǐng)求的參數(shù)(Parameter)、會(huì)話(Session)、Servlet上下文(ServletContext)等內(nèi)容,具體的方法就不需要參數(shù)了。
ActionForm與Action合二為一,表現(xiàn)層Bean里面可以有多個(gè)方法。
可以在表現(xiàn)層Bean中方便地使用POJO對(duì)象。
由于做了IOC,對(duì)BaseBean、BeanAction稍加改造,持久層、業(yè)務(wù)層、表現(xiàn)層遇到錯(cuò)誤直接拋異常,在BeanAction可以捕獲到所有異常,便于錯(cuò)誤和異常的統(tǒng)一處理。
二、用WSAD運(yùn)行jpetstore
第一步:用DDL中的腳本建表和數(shù)據(jù)。
第二步:?jiǎn)?dòng)WSAD后,建立工程
1.由于已有jpetstore文件,選擇文件->導(dǎo)入
選war文件(也可以war解壓縮,選擇文件系統(tǒng)):

點(diǎn)擊“完成”后,選擇相應(yīng)的war文件(見附件)。
2.“新建”項(xiàng)目

取名jpetstoreWeb

完成后,建立了一個(gè)動(dòng)態(tài)WEB項(xiàng)目。
3.導(dǎo)入java文件
在“Java資源”右鍵選擇導(dǎo)入,類似的,選擇導(dǎo)入文件系統(tǒng)后,選擇src文件夾(jpetstore.war中有,解壓出來)。
工程就建立起來了。
4.修改properties\database.properties文件,比如,如果是mysql數(shù)據(jù)庫
driver=org.gjt.mm.mysql.Driver
url=jdbc:mysql://localhost/jpetstore
username=root
password=root
第三步:運(yùn)行工程
右鍵點(diǎn)擊“jpetstoreWeb”工程,選擇“在服務(wù)器上運(yùn)行”

由于WSAD帶WebSphere測(cè)試環(huán)境,全部默認(rèn)就可以。
在IE運(yùn)行 http://localhost:9080/jpetstoreWeb/
控制臺(tái)右下有“服務(wù)器”,可以啟動(dòng)或者停止服務(wù)器。
第四步:重構(gòu)項(xiàng)目
1.右鍵com.ibatis.jpetstore.persistence.iface.AccountDao,選擇“重命名”,如為IAccountDao(我個(gè)人的習(xí)慣,接口都以I開頭),所有引用AccountDao的java文件中,AccountDao也全部更改名稱了。其余的幾個(gè)Dao也重命名。
2.打開com.ibatis.jpetstore.service.AccountService,選擇“重構(gòu)”->“抽取接口”,命名IAccountService,形成接口和實(shí)現(xiàn)兩個(gè)文件,所有對(duì)AccountService的引用也同時(shí)修改。
第五步:導(dǎo)出EAR文件。
二、在Websphere5.1中運(yùn)行jpetstore
進(jìn)入Webshpere的管理控制臺(tái),選擇安裝新的應(yīng)用程序,導(dǎo)入并發(fā)布jpetstore.ear后,就可以在IE中直接運(yùn)行了( http://localhost:9080/jpetstoreWeb/)。
三、用ROSE為jpetstore建模
本部分的模型,首先通過ROSE工具的反向工程(Reverse Engineer)、然后進(jìn)行整理生成。
(一)、UseCase用例

普通用戶(user)可以搜索產(chǎn)品(searchProducts)、查看產(chǎn)品分類(viewCategory)、查看產(chǎn)品(viewProduct)、查看產(chǎn)品項(xiàng)目(viewItem)、注冊(cè)新賬號(hào)(newAccount)、登陸(sign-In)。
登陸后的用戶(signedUser)可以注銷登陸(sign-Out)、編輯賬號(hào)(editAccount)、將產(chǎn)品項(xiàng)目放入購(gòu)物車(addItemToCart)、從購(gòu)物車刪除產(chǎn)品項(xiàng)目(removeItemFromCart)、修改購(gòu)物數(shù)量(updateCartQuantities)、新訂單(newOrder)、查看訂單(viewOrder)、查看購(gòu)物車(viewCart)、結(jié)算(checkout)。
(二)、數(shù)據(jù)模型

jpetstore的數(shù)據(jù)模型可以分三大類:
1.產(chǎn)品相關(guān):
產(chǎn)品分類(CATEGORY)
產(chǎn)品(PRODUCT),也可以說是產(chǎn)品的小分類
單個(gè)產(chǎn)品(ITEM),描述具體產(chǎn)品的詳細(xì)屬性
供應(yīng)商(SUPPLIER)
產(chǎn)品庫存(INVENTORY)
2.用戶賬號(hào)相關(guān):
用戶賬號(hào)(ACCOUNT)
用戶口令(SIGNON),ibatis純粹為了展示表關(guān)聯(lián)的用法。
用戶配置文件(PROFILE),存放用戶個(gè)性化信息。
系統(tǒng)BANNER信息(BANNERDATA)
3.訂單相關(guān):
用戶訂單(ORDERS)
訂單狀態(tài)(ORDERSTATUS)
訂單詳情(LINEITEM)
(三)、WEB模型
WEB模型一向是各個(gè)建模工具的弱項(xiàng),ROSE的WEB建模能力也不強(qiáng),有時(shí)不能表達(dá)準(zhǔn)確的含義。
1.新增、修改賬號(hào)

2.瀏覽產(chǎn)品

3.訂單

4.購(gòu)物車(略)
對(duì)于WEB模型,配合struts的導(dǎo)航圖(NitroX生成,部分截圖),會(huì)更清楚些。

(四)、類圖

蘭色方框內(nèi)是通過spring+hibernate實(shí)現(xiàn)的。可以看到,表現(xiàn)層的AccountBean是面向接口調(diào)用Service的,當(dāng)改為用hibernate實(shí)現(xiàn)O/R mapping時(shí),只需要修改接口的實(shí)現(xiàn)類(DAO持久層),表現(xiàn)層的程序不需要任何修改。
資源:
附件一:ROSE,jpetstore.mdl
[下載文件]
附件二:jpetstoreWeb工程(不包括spring.jar、hibernate3.jar,太大了)
[下載文件]
posted on 2005-11-06 17:26 船夫 閱讀(480) 評(píng)論(0) 編輯 收藏