spark的自留地(ofbiz/eclipse rcp/shark/opentaps)

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            54 Posts :: 0 Stories :: 112 Comments :: 0 Trackbacks

          1、如何調(diào)試OFBiz
          首先你需要學(xué)習(xí)和熟悉OFBiz的教程與工具指導(dǎo)文檔。指導(dǎo)文檔特別重要,因?yàn)楹芏嘧又黝}內(nèi)容不是排列最前的內(nèi)容卻可能導(dǎo)致問題的發(fā)生。你應(yīng)該熟悉類似于Freemaker,beanshell,XML這些技術(shù)。你也應(yīng)該有過處理那些與OFBiz無關(guān)問題的經(jīng)驗(yàn),比如處理數(shù)據(jù)庫或服務(wù)器引起的問題。
          現(xiàn)在,你應(yīng)該仔細(xì)查看日志文件了解你錯誤發(fā)生的原因。OFBiz在日志文件中提供大量的信息,這些信息將有助于你了解你遇到的問題。它比處理的藝術(shù)更重要。哪些東西看上去工作有些特別,比如比如有些關(guān)聯(lián)程序?qū)?dǎo)致或影響到的結(jié)果,你都可以在日志文件中找到。如果你確實(shí)無法在日志文件中發(fā)現(xiàn)任何有用的東西,這時增加你自己的日志信息直到你有足夠的信息來發(fā)現(xiàn)實(shí)際的問題所在。
          本指引將向你介紹OFBiz的日志文件工作情況,如何增加你自己的日志記錄,以及一些常見信息的含義。這些知識的理解建立在你理解JAVA及其它相關(guān)的技術(shù)基礎(chǔ)上,所有問題的焦點(diǎn)只在于OFBiz的概念與信息內(nèi)容中。

          2. OFBiz日志文件
          OFBiz創(chuàng)建較多日志文件并將它們存儲于logs/目錄(在opentaps-0.9或更早版本中)或framework/logs/(在opentaps-0.9之后版本),文件有:
           - ofbiz.log.? - 記錄所有OFBiz生成日志信息。此文件將在滿時自動循環(huán)創(chuàng)建新文件,即ofbiz.log是當(dāng)前日志文件,ofbiz.log.1是較早些時間的日志文件,ofbiz.log.2是比ofbiz.log.1更早時間的日志文件,以此類推。
           - console.log - 記錄所有OFBiz在控制臺界面運(yùn)行顯示的內(nèi)容。也有可能無效。
           - access_log.? - 類似于Apache httpd日志格式記錄所有服務(wù)請求。很漂亮但對調(diào)試沒有什么用處。

          大多數(shù)據(jù)時間,你可以通過ofbiz.log或console.log來查詢調(diào)試信息。因?yàn)樗鼈冇泻芏鄡?nèi)容,所以你最好使用一個可以翻頁與進(jìn)行查找的編輯器來打開這些日志文件。


          3、查找日志信息
          Java日志信息最容易查找。它們的日志信息中通常有類名與行號生成:

          111770[PaymentGatewayServices.java:776:INFO ] (Capture) Invoice [#10110] total: 38.54

          Minilang方法日志中的類名均為Log.java,如:

          112499[                Log.java:103:INFO ] Finished quickShipEntireOrder:\nshipmentShipGroupFacilityList=[[shipmentId=10120, facilityId=WebStoreWarehouse, shipGroupSeqId=00001]]\nsuccessMessageList=[Created shipment with ID [10120] for ship group ID [00001] for facility ID [WebStoreWarehouse]]

          如果你在beanshell中直接使用輸出,你輸出的內(nèi)容將顯著的顯示于日志文件中:

          2006-07-19 13:46:26,373 [  ServiceDispatcher.java:450:DEBUG] [[Sync service finished- total:0.027,since last(Begin):0.027]] - 'ecommerce / getProductCategoryAndLimitedMembers'
          parentCategory = TABLE-LINENS-SOLIDS 
          2006-07-19 13:46:26,874 [      PriceServices.java:802:INFO ] PromoPrice and ProductPriceAction had null amount and no default price was available, using list price: 2.0 for product with id 15899

          如果你在beanshell中使用調(diào)試方法,你將在日志中得到如下信息:

          2006-07-19 13:46:26,373 [  ?:?] parentCategory = TABLE-LINENS-SOLIDS

          你可以為那些無法發(fā)現(xiàn)日志信息的minilang或beanshell代碼中加入自己的信息輸出。

          所有freemarker,screen-widget或form widget輸出的信息將直接顯示在你的瀏覽器屏幕上。除非這些控件崩潰否則不會顯示任何日志信息。

          4. 增加你自己的日志信息
          在Java中增加你自己的日志信息,請使用OFBiz Debug類(org.ofbiz.base.util.Debug)中的調(diào)試方法,如logInfo,logWarning, logError...
           示例:   Debug.logInfo("Now processing invoice " + invoiceId, module);

          在beanshell中增加日志信息,同樣使用Debug方法,但在內(nèi)容中忽略如""這樣內(nèi)容。

          在freemarker中增加日志信息,只需要顯示你打算跟蹤的變量,如:

             ${invoice}  <#-- 將顯示 invoice 的一般屬性值-->
             ${invoice.invoiceId}  
          <#-- 將顯示invoice.invoiceId屬性值 -->

           

          在minilang中增加日志信息,使用<log >指令并輸入你的值,比如在freemarker中:

             ${invoice}  <#-- will display the entire GenericValue invoice -->
             ${invoice.invoiceId}  
          <#-- will display the invoiceId field of invoice -->


          通常level節(jié)點(diǎn)屬性用于設(shè)置日志級別,如:"info", "warning", "error",對應(yīng)于Debug中的同名方法。


          5. 何時需要重啟OFBiz

          你在做如下更改時需要重新啟動OFBiz服務(wù)器:
          - Java文件(記得要重新編譯)
          - 配置/.properties文件
          - entitymodel或entitygroup XML定義文件
          - 服務(wù)或secas XML文件
          - JPublish XML文件

          你在進(jìn)行以下修改時無需重新啟動OFBiz服務(wù)器:
          - freemarker FTL模版
          - beanshell BSH模版
          - Screens XML文件
          - Forms XML文件
          - 控制器XML文件(注意:在opentaps-0.8和OFBiz 3.x及更早版本中,你在更改控制器時需要重啟)
          但有可能你需要在瀏覽器中清除緩存。
           

          6. 常見錯誤及其含義:

          Cannot locate service by name (captureBillingAccountPayment)

             * 此服務(wù) (captureBillingAccountPayment) 在所有 services.xml 定義中都找不到.
          Cannot find service location (org.ofbiz.order.order.OrderServices)
             * 說明在services XML定義點(diǎn)上指向的資源不存在.  如果這是一個minilang或beanshell服務(wù),即服務(wù)引擎無法找到此文件。如果這是一個Java服務(wù),則說明在classpath中無法查找到這個類。

          Service method does not exist (com.opensourcestrategies.financials.invoice.InvoiceServices.setInvoiceDueDate(org.ofbiz.service.DispatchContext, java.util.Map))

             * 含義是在某個services.xml指定的這個服務(wù)不存在對應(yīng)的Java方法。通常發(fā)生于你在修改了Java文件后忘記再次編譯它來使新增的方法生效。

          java.lang.IllegalArgumentException: Could not get next sequenced ID for sequence name: Party (Could not get next sequenced ID for sequence name: Party).   

             * 系統(tǒng)無法取得實(shí)體的下一個自動ID,通常發(fā)生于數(shù)據(jù)庫斷開情況。

          ERROR: insert or update on table "inventory_item" violates foreign key constraint "inv_item_facility"


             * 在"inventory_item"表的插入/修改操作時違犯"inv_item_facility"外鍵約束。

          Error calling event: org.ofbiz.webapp.event.EventHandlerException: Service invocation error (Commit transaction failed)

             * 這是一個非常令人討厭的錯誤信息。通常它意味著你訪問的服務(wù)所觸發(fā)的ECA鏈服務(wù)中有一個服務(wù)失敗,于是導(dǎo)致全部的操作失敗。服務(wù)引擎無法為你進(jìn)一步跟蹤,所以你需要進(jìn)入log文件中進(jìn)一步查找錯誤原因。訪問你的logs/ofbiz.log 或logs/console.log文件去了解觸發(fā)錯誤的根本原因。

          Unable to bind UserTransaction/TransactionManager to JNDI

             * 這是在opentaps 0.8/0.9及OFBiz的pre-Geronimo版本在Linux系統(tǒng)下可能會發(fā)生的一個問題.  解決方法可以在以下網(wǎng)址中找到:  
               http://lists.ofbiz.org/pipermail/users/2004-June/004094.html

          Message: The entity name must immediately follow the '&' in the entity reference.
          org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.

             * 這是一個 XSL:FO 錯誤并意味著你在文本中使了字符'&',比如說你在描述或地址中使了這個字符。 XSL:FO 使用xml屬性格式,所以你需要確認(rèn)你在文本字段后放置?xml。

          本文檔譯自ofbiz 4.0 cookbooks,本人翻譯,歡迎轉(zhuǎn)載,請注明出處.
          posted on 2008-10-08 22:44 shanghai_spark 閱讀(2222) 評論(0)  編輯  收藏 所屬分類: opentaps
          主站蜘蛛池模板: 浦东新区| 蓬安县| 吴旗县| 米易县| 潜山县| 张家界市| 百色市| 雅江县| 岑巩县| 嘉鱼县| 封丘县| 开江县| 邵阳县| 台山市| 仪征市| 卢龙县| 贵南县| 公安县| 游戏| 镇远县| 靖州| 资溪县| 铜川市| 西城区| 溆浦县| 新邵县| 安顺市| 仲巴县| 三门县| 安丘市| 广水市| 广饶县| 秭归县| 新干县| 德州市| 额济纳旗| 奉化市| 张北县| 疏勒县| 岑溪市| 永新县|