使用Forte for Java開發(fā)EJB
本文描述了Forte for Java企業(yè)版3.0和java 2.0 平臺(tái)、以及與J2EE兼容的服務(wù)器和容器一起,為開發(fā)者提供了一個(gè)建造端對(duì)端(end-to-end)Java應(yīng)用程序的強(qiáng)大的環(huán)境。在本文中,我們將集中介紹使用Forte for Java企業(yè)版開發(fā)企業(yè)JavaBean(Enterprise JavaBeans簡稱EJB)應(yīng)用程序。簡介Sun ONE(Sun Open Net Evironment)開放網(wǎng)絡(luò)環(huán)境作為Sun公司發(fā)布的網(wǎng)絡(luò)服務(wù)戰(zhàn)略,為企業(yè)提供創(chuàng)建、裝配和配置Web的服務(wù)。Sun ONE框架包括很多工具和技術(shù),例如Forte for Java和Forte ESP,創(chuàng)建(create)、裝配(assemble)、集成(integrate)和分發(fā)(distribute)這些Web服務(wù)給最終用戶。Forte for Java基于開放式架構(gòu),設(shè)計(jì)成輕易和其他工具集成,諸如Macromedia Dreamweaver與Adobe Golive等網(wǎng)頁設(shè)計(jì)工具和包括ISV等開發(fā)的應(yīng)用服務(wù)器(Application Server)等軟件。Forte工具向?qū)О嗽S多向?qū)Ш吞匦裕瑸殚_發(fā)者自動(dòng)完成了許多細(xì)節(jié)性工作。本文著重介紹了Forte for Java企業(yè)版在EJB開發(fā)方面的特性,以及如何有效的利用這些特性。利用Forte for Java 企業(yè)版工具向?qū)Э梢蚤_發(fā)、配置和測(cè)試符合EJB 1.1規(guī)范的EJB(注:Forte for Java企業(yè)版將在下一個(gè)版本中支持EJB 2.0規(guī)范)。簡言之,F(xiàn)orte for Java 企業(yè)版提供的EJB開發(fā)主要包括了以下的特性和優(yōu)點(diǎn):提供開發(fā)會(huì)話bean(session bean)(有狀態(tài)的或無狀態(tài)的皆可)和實(shí)體bean(entity bean)的模板。 包括 bean治理存儲(chǔ)(bean-managed persistence簡稱BMP)和容器治理存儲(chǔ) (container-managed persistence簡稱CMP)。 生成需要的界面和類---bean的本地接口(home interface),遠(yuǎn)程接口(remote interface)和實(shí)現(xiàn)類(implementation class)。 通過"logical" bean來協(xié)調(diào)與簡化bean的開發(fā)。 可以用來檢查bean是否遵循EJB 1.1 規(guī)范。自動(dòng)將這些bean打包在一個(gè)EJB的 JAR文件中。 通過標(biāo)準(zhǔn)的部署(deployment )API 實(shí)現(xiàn)應(yīng)用服務(wù)器的集成,使bean的開發(fā)更快捷。通過采用工具向?qū)Р⑸梢粋€(gè)bean的jsp 測(cè)試客戶端,簡化了bean的測(cè)試過程。 Forte for Java 企業(yè)版的要害特性是它側(cè)重于EJB的開發(fā)、部署、測(cè)試周期。它關(guān)心的是bean開發(fā)過程中的大部分的'雜務(wù)活'以及其他的一些工作。例如:自動(dòng)生成必要的界面。包含了必要的方法的實(shí)現(xiàn)。幫助建立EJB的字段。能提示或直接插入所有方法必要的參數(shù)、返回類型和異常。 編譯bean一步完成。對(duì)已編譯的bean進(jìn)行應(yīng)用服務(wù)器打包和部署的工作也是一步完成。同時(shí)FORTE FOR JAVA企業(yè)版能為bean創(chuàng)建測(cè)試客戶端。這個(gè)測(cè)試客戶端可以從瀏覽器一端調(diào)用以測(cè)試該bean的功能。開發(fā)EJBEJB是一種用于商務(wù)過程(business processes)和商務(wù)數(shù)據(jù)(business data)建模的強(qiáng)大的組件。EJB開發(fā)者,通常也就是個(gè)人或某公司商務(wù)系統(tǒng)的專家,他們更適合把精力集中在bean的商務(wù)邏輯的實(shí)現(xiàn)上,而讓EJB容器和J2EE平臺(tái)來處理企業(yè)運(yùn)算當(dāng)中的非商務(wù)邏輯的部分(如遠(yuǎn)程訪問,事務(wù)處理,安全等)。盡管如此,開發(fā)EJB絕不僅僅是單純編寫商務(wù)方法這么簡單。 首先,開發(fā)EJB需要正確設(shè)置開發(fā)環(huán)境,才能把bean的組件部署到應(yīng)用服務(wù)器上。其次,需要?jiǎng)?chuàng)建構(gòu)成EJB的不同組件,并根據(jù)bean類型的不同,這些組件必須包含特定的方法。一旦開發(fā)了bean,就必須把這些bean部署到操作環(huán)境中。最后,應(yīng)該通過客戶端或測(cè)試程序來對(duì)這些bean進(jìn)行驗(yàn)證。設(shè)置開發(fā)環(huán)境Forte for Java企業(yè)版為開發(fā)者提供了用于設(shè)置開發(fā)環(huán)境的工具和向?qū)Аi_發(fā)EJB就意味著要與數(shù)據(jù)庫打交道,顯然相應(yīng)地,就要能訪問J2EE應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器。Forte for Java 企業(yè)版使開發(fā)者們能在集成開發(fā)環(huán)境(IDE)里進(jìn)行這項(xiàng)設(shè)置工作。在這里使用Forte for Java企業(yè)版命令,可以安裝數(shù)據(jù)庫驅(qū)動(dòng)程序,建立與基礎(chǔ)數(shù)據(jù)庫的連接。該IDE 還能幫助開發(fā)者配置和運(yùn)行應(yīng)用服務(wù)器,運(yùn)行必要的數(shù)據(jù)庫服務(wù)器等等。作為一個(gè)例子,圖1顯示了如何從FORTE FOR JAVA企業(yè)版瀏覽窗口中啟動(dòng)J2EE 引用實(shí)現(xiàn)(Reference Implementation,簡稱RI)應(yīng)用服務(wù)器的一個(gè)實(shí)例。圖片下方的輸出窗口則顯示了服務(wù)器的啟動(dòng)信息。 圖1:啟動(dòng)缺省的應(yīng)用服務(wù)器假若您需要定義一個(gè)實(shí)體bean來建模一個(gè)已存在的數(shù)據(jù)庫,可以利用FORTE FOR JAVA企業(yè)版非常方便地將數(shù)據(jù)庫的表映像到這個(gè)新的bean中,一旦啟動(dòng)了數(shù)據(jù)庫服務(wù)器并且已經(jīng)建立了連接,你就可以在IDE 里顯示這個(gè)數(shù)據(jù)庫表,表中的列,定義視圖和過程。反過來你也可以在IDE 里將某實(shí)體bean及其字段映像到某數(shù)據(jù)庫表和表中的列。假如你選擇容器治理存儲(chǔ)的方式,你既可以用其中的屬性對(duì)話框窗口去映像bean的存儲(chǔ)字段,也可以手工定義這些字段。在項(xiàng)目中采用FORTE FOR JAVA企業(yè)版的工具并不會(huì)限制你只能在它的IDE 里開發(fā)該項(xiàng)目所有的EJB。FORTE FOR JAVA企業(yè)版答應(yīng)將在其他地方開發(fā)的EJB也集成進(jìn)來。使用項(xiàng)目治理的功能,我們可以引入已存在的個(gè)別bean乃至整個(gè)包。創(chuàng)建EJB組件開發(fā)EJB時(shí)必須遵守某些規(guī)定--- 不管是會(huì)話或?qū)嶓wbean,都是由三個(gè)接口和類組成的:一個(gè)本地接口,一個(gè)遠(yuǎn)程接口,一個(gè)實(shí)現(xiàn)類。并且,這些接口與類必須包含需要的方法,方法要以特定的方式命名,有特定的返回類型,異常,諸如此類。FORTE FOR JAVA企業(yè)版在許多方面簡化了EJB的開發(fā)。由向?qū)г陂_發(fā)過程中一步步的指引,向?qū)Р粌H會(huì)顯示當(dāng)前處于開發(fā)過程的那個(gè)階段,而且可以提示接下來的步驟。選擇的選項(xiàng)不同,接下來的步驟提示相應(yīng)會(huì)改變。定義一個(gè)新的EJB假設(shè)需要為一個(gè)應(yīng)用程序創(chuàng)建多個(gè)EJB,首先我們會(huì)為這個(gè)應(yīng)用程序新建一個(gè)包,以便把所有的bean都集中到一起。接著,在瀏覽窗內(nèi)用鼠標(biāo)右擊包的名字,從彈出的上下文菜單(context menu)中選擇要放置在包中的組件的所屬類型的模板。例如,JSP, Java Servlet, JavaBeans, EJB 等。出于本文的需要,我們選擇EJB組件中的會(huì)話bean,而不是實(shí)體bean。選擇EJB組件后,不管是會(huì)話bean還是實(shí)體bean,模板向?qū)Ф紩?huì)一步步指引我們創(chuàng)建特定的組件。圖2顯示了創(chuàng)建有狀態(tài)會(huì)話bean時(shí)的向?qū)聊弧!?圖2:有狀態(tài)會(huì)話bean的向?qū)Т?在創(chuàng)建實(shí)體bean的向?qū)е刑峁┮粋€(gè)選項(xiàng)用于指定采取bean治理存儲(chǔ)還是容器治理存儲(chǔ)。一旦指定了實(shí)體bean的存儲(chǔ)治理方式,向?qū)?huì)自動(dòng)依據(jù)選擇結(jié)果提示下一步的信息。bean治理存儲(chǔ)選項(xiàng)意味著開發(fā)者自行提供存儲(chǔ)代碼,這種情況下需要附加一步,也是唯一的一步就是指定bean的實(shí)現(xiàn)類與接口。若選擇容器治理存儲(chǔ),向?qū)?huì)引導(dǎo)你完成附加的定義和映像存儲(chǔ)字段的工作。假如實(shí)體bean建模的是已存在的數(shù)據(jù)庫表,我們可以選擇這個(gè)表,將bean字段映像表的列。另外也可以手工指定存儲(chǔ)字段,或?qū)τ谝汛嬖诘腷ean可以從它的主鍵Java類選擇。實(shí)現(xiàn)bean確定bean類型之后,IDE 會(huì)生成組件必須包含的本地接口,遠(yuǎn)程接口和 bean的實(shí)現(xiàn)類。并且,這些接口與類又包含了所有需要的方法,(例如 ejbLoad, ejbStore, ejbActivate, ejbPassivate方法) 、上下文相關(guān)(context-related)的方法,以及create, find, and remove方法。這樣有助于開發(fā)者將精力集中于實(shí)現(xiàn)bean的商務(wù)邏輯上。為了進(jìn)一步方便bean的開發(fā)過程,F(xiàn)ORTE FOR JAVA企業(yè)版提供邏輯EJB(logical Enterprise JavaBeans).在瀏覽窗口中邏輯EJB用圖標(biāo) 表示,它為所有bean提供一個(gè)完整協(xié)調(diào)的視圖,包括他們的接口,字段,方法等。由于bean的接口和實(shí)現(xiàn)緊密相連,使同一個(gè)方法在各處保持一致是很重要的。例如,假如在一個(gè)會(huì)話bean的home接口聲明create方法,那就必須在實(shí)現(xiàn)類中提供相應(yīng)的ejbCreate方法。在bean的remote接口聲明的商務(wù)方法必須在bean的類中正確實(shí)現(xiàn)。EJB的邏輯視圖保證了FORTE FOR JAVA企業(yè)版自動(dòng)保持bean的所有的相關(guān)組件之間的同步。FORTE FOR JAVA企業(yè)版很靈活,它不但可以直接加工單個(gè)的組件,例如實(shí)現(xiàn)類或遠(yuǎn)程接口,也可以通過邏輯視圖(logical view)集體進(jìn)行。兩種方式下,IDE 都能保證其中的協(xié)調(diào)性。舉例來說,F(xiàn)ORTE FOR JAVA企業(yè)版可以保證一個(gè)新方法,不論是從bean的邏輯視圖還是它的遠(yuǎn)程接口處定義的,都會(huì)在bean的類里正確地顯示出來。假如你想在bean的類里包含一個(gè)方法,卻不想讓此方法在遠(yuǎn)程接口中顯示出來的話,務(wù)必直接將此方法添加到bean的實(shí)現(xiàn)類中。這樣處理的方法是不會(huì)自動(dòng)加入遠(yuǎn)程接口的。圖3展示了一個(gè)實(shí)體bean產(chǎn)品邏輯EJB,還有home接口、remote接口還有beans類。這里的邏輯EJB,即ProdUCt.entejb在瀏覽器窗口中展開了。由此可以看出,從邏輯EJB可以訪問bean類和它的兩個(gè)接口。也可以看見實(shí)體bean的create, find, 和 business 方法,以及它的容器治理存儲(chǔ)的字段。另外,鼠標(biāo)右擊bean的邏輯名將彈出包含可執(zhí)行操作的上下文菜單(如圖3所示)。菜單中可執(zhí)行的命令例如:察看部署描述符(deployment descriptor),驗(yàn)證(validate)和編譯bean的所有類與接口,創(chuàng)建新方法(包括create, find, and business方法),生成EJB模塊,創(chuàng)建測(cè)試程序。 圖 3: 使用一個(gè)邏輯 Enterprise Bean
在邏輯bean中鼠標(biāo)右擊一個(gè)組件也會(huì)彈出上下文菜單,菜單中顯示可用于該組件的特定的子操作集。例如,本地接口的上下文菜單中只提供增加新的create和find方法的操作。而遠(yuǎn)程接口的上下文菜單只提供創(chuàng)建新的business方法的操作。不使用邏輯bean也可以直接加工bean的接口與類。例如,在需要?jiǎng)?chuàng)建bean的類與接口的子類,或是將其映射到數(shù)據(jù)庫表時(shí)你可能希望直接去編輯它,或單獨(dú)對(duì)某個(gè)類或接口進(jìn)行編譯。在定義bean的新的方法或字段的過程時(shí),會(huì)有對(duì)話框引導(dǎo)你。這些對(duì)話框會(huì)提示輸入方法或字段的名稱,字段的類型,方法的返回類型,所有的方法參數(shù)及其類型,所有除了EJB必要的異常外的附加異常(必要的異常已經(jīng)缺省添加了)。IDE 會(huì)在bean的類,遠(yuǎn)程或本地接口處加入正確的方法簽名。圖4展示了創(chuàng)建一個(gè)新的商務(wù)方法時(shí)的對(duì)話框。
Figure 4: 創(chuàng)建一個(gè)商務(wù)方法如何編寫方法的實(shí)現(xiàn):首先,在FORTE FOR Java企業(yè)版資源編輯器(Source Editor)窗口中打開bean的實(shí)現(xiàn)類,接著,找到方法聲明,敲入代碼。注重ForteJava企業(yè)版把Java保留字用蘭色顯示。另外,編譯bean時(shí)如有編譯錯(cuò)誤將用紅色標(biāo)出。 Bean的引用(reference),諸如EJB引用,環(huán)境表項(xiàng)(environment entries),資源構(gòu)造引用(resource factory references),安全角色引用(security role references)等皆可以在屬性編輯器(Property Editor)中的References 標(biāo)簽內(nèi)指定。在這里可以添加,編輯和刪除這些引用和環(huán)境表項(xiàng)。References標(biāo)簽如圖5所示。Figure 5: 屬性編輯器中的References 標(biāo)簽驗(yàn)證和編譯EJBForte for Java企業(yè)版包含一個(gè)驗(yàn)證EJB(Validate EJB)命令和編譯所有EJB的類的命令。驗(yàn)證類似于編譯。執(zhí)行Validate EJB時(shí),F(xiàn)orte for Java企業(yè)版會(huì)檢查bean的類是否正確遵守J2EE規(guī)范。源代碼中的錯(cuò)誤被提亮顯示,必須予與更正。除了可以編譯或驗(yàn)證單個(gè)的bean組件之外,也可以通過企業(yè)版的邏輯bean窗口,使用單條命令就編譯或驗(yàn)證所有組件。瀏覽器窗口中標(biāo)明了哪些bean需要編譯,哪些bean已經(jīng)成功編譯了。其中bean的接口與類用一連串的點(diǎn)加以標(biāo)記的表示需要編譯。如圖6中,名為ProdUCt 和MySession的bean它們的類、遠(yuǎn)程接口與本地接口都需要進(jìn)行編譯(注重邏輯bean旁沒有這些標(biāo)記)。相比之下, bean CustomerTbl沒有這種標(biāo)記,表示它已經(jīng)成功編譯了。Figure 6: 瀏覽器窗口中bean的編譯標(biāo)記 打包與部署編譯之后,EJB類就可以打包到需要的JAR文件、創(chuàng)建一個(gè)EJB模塊,然后部署到J2EE應(yīng)用服務(wù)器。使用Forte for Java企業(yè)版,不僅可使打包與部署過程縮減到一步,而且IDE 還能生成測(cè)試程序---一個(gè)jsp客戶端,可以從瀏覽器調(diào)用它來測(cè)試bean。在打包EJB和創(chuàng)建EJB模塊之前,任何有bean的開發(fā)者指定的EJB引用都需要人工解析(resolve)。測(cè)試客戶端應(yīng)用程序不能自動(dòng)處理含有EJB引用的EJB模塊的打包。EJB引用使從特定的EJB模塊的屬性編輯器里解析的。在組裝(assembly)過程中,bean的開發(fā)者指定的引用和環(huán)境表項(xiàng)可以被EJB模塊上執(zhí)行的操作覆蓋(overridden)。EJB模塊的部署描述符也可以人工編輯。假如覆蓋了表項(xiàng)或引用,新的值將只應(yīng)用于引用此EJB的模塊。也就是說,并不會(huì)影響為EJB設(shè)置的初始值。假如同一個(gè)EJB也包含在另一個(gè)EJB模塊中,則后一個(gè)EJB模塊將引用bean的初始環(huán)境表項(xiàng)和引用值。一個(gè)EJB模塊的覆蓋過程如圖7所示。Figure 7: 覆蓋一個(gè) EJB 引用EJB模塊通過在一系列被引用的java類上執(zhí)行傳遞性關(guān)閉(transitive closure)來協(xié)助bean的打包。傳遞性關(guān)閉在編譯時(shí)會(huì)算出一個(gè)類中所有可識(shí)別的類引用。這樣做的目的是減輕組裝器維護(hù)所有被引用的類的負(fù)擔(dān)。結(jié)果,組裝器只需要維護(hù)被動(dòng)態(tài)引用的類就行了。 解析bean的EJB引用之后,就可以鼠標(biāo)右擊邏輯bean來完成它的打包和部署。然后從上下文菜單中選擇創(chuàng)建EJB測(cè)試程序的選項(xiàng)。IDE 將會(huì)提示你指定要部署應(yīng)用的應(yīng)用服務(wù)器。這個(gè)過程可以隨意分解成幾個(gè)步驟:例如,可以使用命令:New EJB Module(創(chuàng)建新的EJB模塊)將bean的類打包到一個(gè)EJB模塊中,接著在此模塊上調(diào)用部署的操作,然后再創(chuàng)建它的測(cè)試程序。為了使部署功能起作用,在此之前必須從IDE 的Server Registry(服務(wù)器注冊(cè))里選擇缺省服務(wù)器。Server Registry列出你的系統(tǒng)上所有可用的服務(wù)器。同時(shí)還必須創(chuàng)建服務(wù)器的一個(gè)實(shí)例,啟動(dòng)服務(wù)器進(jìn)程。盡管J2EE應(yīng)用服務(wù)器的部署過程一般是一致的,每一種應(yīng)用服務(wù)器卻都有自己的部署方式。目前,J2EE平臺(tái)正在定義一個(gè)標(biāo)準(zhǔn)的服務(wù)器部署API。此API通過提供標(biāo)準(zhǔn)的在與J2EE相兼容的應(yīng)用服務(wù)器上部署EJB的方法,將會(huì)增加EJB在J2EE應(yīng)用服務(wù)器的可移植性。鑒于服務(wù)器API有望成為一種平臺(tái)標(biāo)準(zhǔn),F(xiàn)ORTE FOR JAVA企業(yè)版提供了一個(gè)可以插入應(yīng)用服務(wù)器軟件的服務(wù)器API。該服務(wù)器API包含了整個(gè)部署過程,從而實(shí)現(xiàn)FORTE FOR JAVA企業(yè)版對(duì)部署過程的標(biāo)準(zhǔn)化。應(yīng)用服務(wù)器廠商可以向該API提供他們自己的插件。基于特定的應(yīng)用服務(wù)器,每個(gè)插件的兼容性有所不同。這些插件在FORTE FOR JAVA企業(yè)版開發(fā)環(huán)境和每個(gè)支持J2EE的服務(wù)器間運(yùn)行。他們實(shí)現(xiàn)服務(wù)器API,將各個(gè)服務(wù)器的部署過程與FORTE FOR JAVA企業(yè)版集成在一起。圖8示描述了這個(gè)結(jié)構(gòu)。Figure 8: 應(yīng)用服務(wù)器部署插件指定了即將使用的應(yīng)用服務(wù)器,F(xiàn)ORTE FOR JAVA企業(yè)版就會(huì)自動(dòng)插入相應(yīng)的服務(wù)器API,好預(yù)備部署EJB。從開發(fā)者的角度看,不管使用哪一種服務(wù)器,開發(fā)過程都很簡單,直截了當(dāng)。因?yàn)镕ORTE FOR JAVA企業(yè)版懂得不同的服務(wù)器之間部署上的差別,它可以自動(dòng)處理好這些差別。測(cè)試 beanFigure 9: Generating a Test Application 在成功部署這些bean之后,F(xiàn)ORTE FOR JAVA企業(yè)版會(huì)為bean創(chuàng)建一個(gè)EJB和一個(gè)Web模塊,以及bean的測(cè)試程序。其中EJB模塊包含已編譯的EJB類。Web模塊則包含測(cè)試客戶端的JSP(Java Server Pages)。要測(cè)試bean時(shí),只需簡單地在瀏覽器內(nèi)調(diào)用測(cè)試程序即可。例如,在部署會(huì)話bean MySession時(shí),F(xiàn)ORTE FOR JAVA企業(yè)版會(huì)創(chuàng)建EJB模塊:ySession_EJBModule, Web模塊:MySession_WebModule,和測(cè)試程序:MySession_TestApp。如圖9所示。在瀏覽器窗口內(nèi)輸入U(xiǎn)RL來測(cè)試應(yīng)用程序,如以下所示:http://server:8000/test application(其中server是我們的web服務(wù)器的名稱,test application則是開發(fā)環(huán)境中創(chuàng)建的測(cè)試程序的名稱。例如:MySession_TestApp)通過瀏覽器視圖可以訪問本地和遠(yuǎn)程接口的實(shí)例,從本地接口開始。接口中的方法可以被調(diào)用。例如,用create方法來創(chuàng)建遠(yuǎn)程接口的一個(gè)實(shí)例。方法需要的任何參數(shù)都可由瀏覽器中輸入,它則會(huì)顯示方法的返回值。這個(gè)視圖還會(huì)保留測(cè)試會(huì)話中創(chuàng)建的一系列對(duì)象。比如,圖10顯示的是運(yùn)行MySession_TestApp時(shí)瀏覽器內(nèi)顯示的測(cè)試頁面。Figure 10: 在瀏覽器中使用IDE 生成的測(cè)試程序結(jié)論這篇文章描述了如何使用FORTE FOR JAVA企業(yè)版產(chǎn)品來進(jìn)行EJB的開發(fā),部署與測(cè)試,使整個(gè)過程更輕易,以便我們把精力集中編寫在bean的商務(wù)邏輯,這也是作為bean開發(fā)者的正務(wù)。這個(gè)目標(biāo)是能夠達(dá)成的,因?yàn)镕ORTE FOR JAVA企業(yè)版自動(dòng)治理許多EJB的開發(fā)工作,例如保持本地與遠(yuǎn)程接口和bean 實(shí)現(xiàn)類之間的同步,生成需要的方法,保證正確的方法返回類型,等等。開發(fā)完EJB后,F(xiàn)ORTE FOR JAVA企業(yè)版可以一步完成組成bean的類與接口的編譯。接著對(duì)已編譯的bean打包和部署到符合J2EE規(guī)范的應(yīng)用服務(wù)器上,最后,創(chuàng)建一個(gè)測(cè)試客戶端。這個(gè)測(cè)試客戶端可以從瀏覽器一端調(diào)用以測(cè)試該bean的邏輯。
resizeImage('http://images.wangchao.net.cn/images/upload/images/lsdn/1212201673486.jpg','image1')
resizeImage('http://images.wangchao.net.cn/images/upload/images/lsdn/1212201673627.jpg','image2')
resizeImage('http://images.wangchao.net.cn/images/upload/images/lsdn/1212201673845.jpg','image3')
resizeImage('http://images.wangchao.net.cn/images/upload/images/lsdn/1212201674002.jpg','image4')
resizeImage('http://images.wangchao.net.cn/images/upload/images/lsdn/1212201675720.jpg','image5')
resizeImage('http://images.wangchao.net.cn/images/upload/images/lsdn/1212201675939.gif','image6')resizeImage('http://images.wangchao.net.cn/images/upload/images/lsdn/1212201673267.jpg','image0')
相關(guān)文章:
1. jsp中javaBean的運(yùn)用2. IDEA使用GsonFormat完成JSON和JavaBean之間的轉(zhuǎn)換3. JSR-220:EJB 3.0 最終草案出臺(tái)4. 未來的J2EE主流應(yīng)用框架:對(duì)比Spring和EJB35. 企業(yè)JavaBeansTM技術(shù)介紹6. EJB3.0部署消息驅(qū)動(dòng)Bean拋javax.naming.NameNotFoundException異常7. Java cglib為實(shí)體類(javabean)動(dòng)態(tài)添加屬性方式8. JavaBeans和關(guān)系數(shù)據(jù)庫的鏡像9. JCP 奧斯卡, EJB3, JAVA EE, 動(dòng)態(tài)語言 進(jìn)入提名
