隨筆-22  評論-6  文章-17  trackbacks-0

          用 JBuiler 玩轉(zhuǎn) petstore

          極度深藍 http://www.jdon.com Oct 18, 2004 9:21 AM 回復(fù)此消息 回復(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ù)此消息 回復(fù)
          發(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ù)此消息 回復(fù)
          發(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ù)
          發(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ù)此消息 回復(fù)
          發(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ù)此消息 回復(fù)
          發(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ù)此消息 回復(fù)
          發(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ù)此消息 回復(fù)
          發(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ù)
          發(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ù)此消息 回復(fù)
          發(fā)表人: xucg    發(fā)表文章: 8 / 注冊時間: 2004-08
          這一步步的我都看不懂
          咋辦呀,太菜!


          Re: 用 JBuiler 玩轉(zhuǎn) petstore 發(fā)表時間: Nov 3, 2004 3:19 PM
          回復(fù)此消息 回復(fù)
          發(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ù)
          發(fā)表人: 極度深藍    發(fā)表文章: 9 / 注冊時間: 2004-09
          恩,是這樣的:

          我一開始搞也同樣是錯誤一大堆。但可以根據(jù)提示一條條逐個解決。一般提示還是寫得比較清楚的,如果你真的了解ejb的原理,并且E文還過得去的話,是一定能夠解決的。相信自己!還有一個辦法想必你也知道,就是把錯誤信息那到google去查。但在這個過程中用處不大,還得靠自己思考。我當時從開始,直到最后一條錯誤也沒有。也花了好幾天時間的,好像是三整天吧。

          這個貼子是自己當時的備忘錄,比較粗糙,只能說抱歉了。面臨畢業(yè)求職,沒有時間詳細寫了


          Re: 用 JBuiler 玩轉(zhuǎn) petstore 發(fā)表時間: Nov 4, 2004 9:22 AM
          回復(fù)此消息 回復(fù)
          發(fā)表人: xucg    發(fā)表文章: 8 / 注冊時間: 2004-08
          我郵箱的地址:xucg@cchongda.com.cn
          謝謝


          Re: 用 JBuiler 玩轉(zhuǎn) petstore 發(fā)表時間: Dec 2, 2004 5:38 PM
          回復(fù)此消息 回復(fù)
          發(fā)表人: alandeon    發(fā)表文章: 1 / 注冊時間: 2004-12
          扯蛋文章!


          Re: ?JBuiler 玩轉(zhuǎn) petstore 發(fā)表時間: Jan 25, 2005 10:48 AM
          回復(fù)此消息 回復(fù)
          發(fā)表人: 大愚弱智    發(fā)表文章: 7 / 注冊時間: 2004-09
          沒玩過petstore,既然你都玩得那么辛苦,我看我也沒不要玩它。想學(xué)ejb沒必有玩它,只要懂得ORM、Container等等,隨便找一個類似于Hello EJB 的入門級的Demo都行。
          posted on 2005-09-13 09:38 surffish 閱讀(368) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 上思县| 盐池县| 龙陵县| 礼泉县| 深州市| 海丰县| 锦屏县| 阳朔县| 伊宁县| 定襄县| 库尔勒市| 疏附县| 平江县| 禹城市| 曲沃县| 南郑县| 新乡县| 漳平市| 甘德县| 阳谷县| 香格里拉县| 汉寿县| 玉树县| 信丰县| 湘潭县| 黑河市| 池州市| 南漳县| 海南省| 伊吾县| 刚察县| 高邮市| 眉山市| 忻城县| 新乡县| 宁波市| 泽州县| 墨脱县| 新野县| 仙居县| 宜兰市|