用 JBuiler 玩轉(zhuǎn) petstore
極度深藍 http://www.jdon.com Oct 18, 2004 9:21 AM 回復(fù)
開發(fā)j2ee應(yīng)用一直用Jbuiler(兩個月前因工作關(guān)系開始用eclipse了),倉促開發(fā)了所謂數(shù)千萬的項目(政府的),在banq的指點下,才突然發(fā)現(xiàn)petstore中有很多可借鑒的東西。
而Jbuiler下玩petstore不是件很容易的事,本人在暑假期間花了三天時間解決了這個問題,愿與大家共享。本文只包括ejb部分。petstore的版本是bea提供的,因為我用的是weblogic,帶來的一個附加的優(yōu)點是學(xué)習(xí)了ejb的繼承。
首先從以下地址下載petstore源碼。 ftp://edownload:BUY_ME@ftpna2.bea.com/pub/downloads/petstore_1.3.1_02_bea.zip 0.按JBuilder標準拷貝文件至src目錄 1.package com.sun.j2ee.blueprints.waf.view.taglibs.smart; 開始位置在com.sun.j2ee.bluprints.taglibs.smart,改。 2.新建petstore Web App,自然引入原有的Web pacakage 3.配好pointbase數(shù)據(jù)源:Enterprise Setup--Database Poilet(URL中要注意去掉jdbc:)--JBuiler中配數(shù)據(jù)源(一直不能看到table,不知何原因。重啟后沒反應(yīng),刪除jndi-definations.xml后,又亂改了一下密碼,refresh才行。) 4.可以開始import ejb了,import所有帶ejb子目錄下的ejb。注意!primary key class手工寫為java.lang.String報錯:Error Parsing EJB file: Source file not found for class: null。是指的String類找不到!麻煩!而寫為com.sun.j2ee.blueprint.xxx.xxPK!也出錯:包不對:com.sun.j2ee.blueprint.xxx.String。改為:com.sun.j2ee.blueprint.xxx.WeblogicxxPK。又出錯! "estore.jar": Unable to load a class specified in your ejb-jar.xml: Unable to load Primary Key class: 'String'. Possible causes: 1: The Primary Key class is a Java Language Primitive; this is not allowed. 2: If the Primary Key is a Compound Key, the Compound Primary Key class is not in the JAR file being compiled. 3: The classpath is incorrect. 此問題最后手工改:petstore.ejbgrpx中的java.lang.String解決。 注意:WeblogicXXXEJB的Inheritence選項中指定EJB的父類。引完后必須手工選擇Table,Table Schema要把后綴EJB去掉,不然EJB-QL語句會出錯。手工選擇對應(yīng)數(shù)據(jù)庫的column,不然會報錯:ejb-jar.xml中的cmp-field必須在weblogic-rdbms-jar中有對應(yīng)元素。 另外,CustomerEJB中account, profile都選對應(yīng)的field為account_primarykey, profile_primarykey而不是同名的field! 5.一路順利,但OPCAdminFacadeEJB報告名稱沖突。原因是建立了錯誤的EJB,找到那個打了叉的EJB視圖。 6.EJB-QL書寫。找到Primiry-key之外的方法,搜索ejb-jar.xml中包括EJB名稱的文件(有很多ejb-jar文件)。拷貝相應(yīng)的ejb-ql語句。 7.ejbCreat方法必須返回primary-key類型的值。此問題的解決辦法是在Local Home Interface中定義主鍵時,使用(Object key),JBuiler有時會自動改,再改回來! 8.把WeblogicXXEJB的primarykey的Integer類型改為String類型,否則會說主鍵描述和定義的不一樣。不能改父類的定義,只能這么改了,不知有無副作用。 9.console-security-user中把admin等用戶的用戶名改為petstore,以便登錄 10. (1)JMS stores MyJMS File Store, JMSFileStore MyJMS File Store Persist, P_JMSFileStore (2)JMS Server MyJMS Server 注意選擇Persistent Store, paging store (3)Connection Factorys jms/opc/QueueConnectionFactory jms/opc/QueueConnectionFactory n/a 4 0 0 jms/petstore/QueueConnectionFactory jms/petstore/QueueConnectionFactory n/a 4 0 0 jms/supplier/QueueConnectionFactory jms/supplier/QueueConnectionFactory n/a 4 0 0 jms/supplier/TopicConnectionFactory jms/supplier/TopicConnectionFactory n/a 4 0 0 Weblogic default connection factory:weblogic.jms.ConnectFactory (4)JMS Server Destinction //jms/opc/MailCompletedOrderQueue JMSQueue jms/opc/MailCompletedOrderQueue n/a default 0 //jms/opc/MailOrderApprovalQueue JMSQueue jms/opc/MailOrderApprovalQueue n/a default 0 //jms/opc/MailQueue JMSQueue jms/opc/MailQueue n/a default 0 //jms/opc/OrderApprovalQueue JMSQueue jms/opc/OrderApprovalQueue n/a default 0 jms/opc/OrderQueue JMSQueue jms/opc/OrderQueue n/a default 0 jms/petstore/AsyncSenderQueue JMSQueue jms/petstore/AsyncSenderQueue n/a default 0 //jms/supplier/PurchaseOrderQueue JMSQueue jms/supplier/PurchaseOrderQueue n/a default 0 //jms/opc/InvoiceTopic JMSTopic jms/opc/InvoiceTopic n/a default 0 //jms/opc/MailInvoiceTopic JMSTopic jms/opc/MailInvoiceTopic n/a default 0 11.mdb it's so strange:mailinvoicetopic and invoicetopic no correcpondding conncetion factory, i use jms/supplier/TopicConnectionFactory 12. [EJB:011031]The Entity EJB requires the table: MANAGEREJB to be accessible. Please ensure that this table exists and is accessible. 更改weblogic-cmp-rdbms.jar中的所有table名,前面加上secame名:PETSTORE 13.如果數(shù)據(jù)庫中沒有對應(yīng)field,則persistence選false即可。 WeblogicXXXEJB中的primaryKey field沒有值,參照源碼中的weblogic-cmp-rdbms.jar改為primaryKey。
我的聯(lián)系方法: johnwoo13 at sohu.com,希望能和同道中人多多交流![b][/b] |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Oct 18, 2004 2:09 PM |
|
發(fā)表人: banq 發(fā)表文章: 4986 / 來 自: 上海 / 注冊時間: 2002-08 |
非常好的經(jīng)驗,介紹兩篇臺灣文章連接:
http://www.javatwo.net/JavaPaper/Petstore_Trace.pdf http://www.javatwo.net/JavaPaper/Petstore_Trace-2-Model.pdf
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Oct 22, 2004 8:17 AM |
|
發(fā)表人: zdbj2ee 發(fā)表文章: 18 / 注冊時間: 2003-08 |
petstore設(shè)計和編碼本身就是一個敗筆.如果程序都像這樣寫沒幾個能用的 我想軟件開發(fā)這東西,還是應(yīng)該更腳踏實地一點.
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Oct 25, 2004 10:23 AM |
|
發(fā)表人: 極度深藍 發(fā)表文章: 9 / 注冊時間: 2004-09 |
:petstore設(shè)計和編碼本身就是一個敗筆.如果程序都像這樣寫沒幾個能用的 愿聞其詳 :我想軟件開發(fā)這東西,還是應(yīng)該更腳踏實地一點. 這話本身不錯啊,但沒讓你程序都像petstore這樣寫啊,如果從實用的角度,petstore無疑是過度設(shè)計的。但你難道不知道sun的初衷嗎?
btw:看了你以前的貼子,sybase下jdbc我是很有經(jīng)驗的,不知您還有問題沒有,元數(shù)據(jù)問題,中文問題,有的話我可以幫忙:),我們以前開發(fā)這個項目時,有的問題技術(shù)支持也搞不定,后來是自己試出來的。sybase低版本對jdbc支持不太好。
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Oct 28, 2004 8:24 AM |
|
發(fā)表人: zdbj2ee 發(fā)表文章: 18 / 注冊時間: 2003-08 |
軟件開發(fā)應(yīng)以實用為主,得出自已項目的模式,pestore是有幾個很好的設(shè)計模型,但在代碼方面問題很多,例如一些異常的處理和代碼的復(fù)用,都有問題,我認為sun的這個例子不是很成功
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Nov 2, 2004 9:39 AM |
|
發(fā)表人: banq 發(fā)表文章: 4986 / 來 自: 上海 / 注冊時間: 2002-08 |
zdbj2ee 說得有一些道理,Petstore不是完美的,這個問題很早以前已經(jīng)爭論過,正如zdbJ2EE所說,其中有一些優(yōu)點可以學(xué)習(xí)。
在我的《Java實用系統(tǒng)開發(fā)指南》最后一章相當于改進了,以一種實際的角度來做Petstore。
對于初學(xué)者,如果你能夠發(fā)現(xiàn)Petstore的問題,帶著批判的眼光去看,估計會提高不少水平,這是我的體會。
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Jan 4, 2005 8:45 PM |
|
發(fā)表人: shuyang 發(fā)表文章: 3 / 注冊時間: 2005-01 |
發(fā)現(xiàn)這里好多人發(fā)帖都很武斷啊,呵呵,有關(guān)petstore設(shè)計問題的討論都這么久了還有人憤青啊,petstore本來就是sun做技術(shù)演示用的,目的是盡量全面展示技術(shù),哪里有考慮效率,實現(xiàn)的簡潔等,就是為了給你看看各種技術(shù),真搞不明白為什么大家看資料不去sun呢,看全了再做評論啊,呵呵,今天忍不住憤青一下,真不服去看看JPetStroe不就得了,那是針對這位先生所說的問題的改進版,用了3154行代碼實現(xiàn)的,sun的用了14000多行吧,為了最直接的展示技術(shù)當然需要很多代碼,很多人天天嚷著到處找資料,上來就討論設(shè)計模式,好比90開始討論面向?qū)ο蟮臒岷鮿乓粯影。呛牵煤酶愫没A(chǔ),什么都有了,哪怕學(xué)學(xué)網(wǎng)絡(luò)恐怕對面向?qū)ο笠矔杏X很熟悉吧,唉,師兄說得對,上了網(wǎng)的人浮躁,發(fā)貼子的更浮躁,我今天剛注冊了一個,就憤青一下。呵呵
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Nov 3, 2004 10:35 AM |
|
發(fā)表人: xucg 發(fā)表文章: 8 / 注冊時間: 2004-08 |
我是j2ee的初學(xué)者,搞懂了ejb的基本原理,作了幾個例子,想學(xué)學(xué)petstore 這篇文章寫的好晦澀,如(0.按JBuilder標準拷貝文件至src目錄)等 讀不懂,怎么辦呀
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Nov 3, 2004 4:05 PM |
|
發(fā)表人: 極度深藍 發(fā)表文章: 9 / 注冊時間: 2004-09 |
To xucg
按jbuiler標準拷貝文件至src目錄 ——就是我們一般用jbuiler做項目時,沒有在根目錄下分ejb,web什么的,而是在后面幾層分,不然jbuiler會不支持。 ——如果困難大多,還是先自己做幾個小例子,比如從數(shù)據(jù)庫中查數(shù)據(jù)顯示出來什么的:)
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Nov 3, 2004 11:06 AM |
|
發(fā)表人: xucg 發(fā)表文章: 8 / 注冊時間: 2004-08 |
這一步步的我都看不懂 咋辦呀,太菜!
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Nov 3, 2004 3:19 PM |
|
發(fā)表人: xucg 發(fā)表文章: 8 / 注冊時間: 2004-08 |
我又訪問了一些國外的網(wǎng)站 也新建了工程引入源文件和包 我用的是weblogic8.1和petstore_1.3.1_02_bea 結(jié)果編譯錯誤一大堆 請值教
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Nov 4, 2004 10:17 AM |
|
發(fā)表人: 極度深藍 發(fā)表文章: 9 / 注冊時間: 2004-09 |
恩,是這樣的:
我一開始搞也同樣是錯誤一大堆。但可以根據(jù)提示一條條逐個解決。一般提示還是寫得比較清楚的,如果你真的了解ejb的原理,并且E文還過得去的話,是一定能夠解決的。相信自己!還有一個辦法想必你也知道,就是把錯誤信息那到google去查。但在這個過程中用處不大,還得靠自己思考。我當時從開始,直到最后一條錯誤也沒有。也花了好幾天時間的,好像是三整天吧。
這個貼子是自己當時的備忘錄,比較粗糙,只能說抱歉了。面臨畢業(yè)求職,沒有時間詳細寫了
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Nov 4, 2004 9:22 AM |
|
發(fā)表人: xucg 發(fā)表文章: 8 / 注冊時間: 2004-08 |
我郵箱的地址:xucg@cchongda.com.cn 謝謝
| |
|
Re: 用 JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Dec 2, 2004 5:38 PM |
|
發(fā)表人: alandeon 發(fā)表文章: 1 / 注冊時間: 2004-12 |
扯蛋文章!
| |
|
Re: ?JBuiler 玩轉(zhuǎn) petstore |
發(fā)表時間: Jan 25, 2005 10:48 AM |
|
發(fā)表人: 大愚弱智 發(fā)表文章: 7 / 注冊時間: 2004-09 |
沒玩過petstore,既然你都玩得那么辛苦,我看我也沒不要玩它。想學(xué)ejb沒必有玩它,只要懂得ORM、Container等等,隨便找一個類似于Hello EJB 的入門級的Demo都行。 | |
posted on 2005-09-13 09:38
surffish 閱讀(368)
評論(0) 編輯 收藏