首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

OFBiz调试技艺禅与道

2012-10-27 
OFBiz调试技巧禅与道1、如何调试OFBiz首先你需要学习和熟悉OFBiz的教程与工具指导文档。指导文档特别重要,因

OFBiz调试技巧禅与道
1、如何调试OFBiz
首先你需要学习和熟悉OFBiz的教程与工具指导文档。指导文档特别重要,因为很多子主题内容不是排列最前的内容却可能导致问题的发生。你应该熟悉类似于Freemaker,beanshell,XML这些技术。你也应该有过处理那些与OFBiz无关问题的经验,比如处理数据库或服务器引起的问题。
现在,你应该仔细查看日志文件了解你错误发生的原因。OFBiz在日志文件中提供大量的信息,这些信息将有助于你了解你遇到的问题。它比处理的艺术更重要。哪些东西看上去工作有些特别,比如比如有些关联程序将导致或影响到的结果,你都可以在日志文件中找到。如果你确实无法在日志文件中发现任何有用的东西,这时增加你自己的日志信息直到你有足够的信息来发现实际的问题所在。
本指引将向你介绍OFBiz的日志文件工作情况,如何增加你自己的日志记录,以及一些常见信息的含义。这些知识的理解建立在你理解JAVA及其它相关的技术基础上,所有问题的焦点只在于OFBiz的概念与信息内容中。

2. OFBiz日志文件
OFBiz创建较多日志文件并将它们存储于logs/目录(在opentaps-0.9或更早版本中)或framework/logs/(在opentaps-0.9之后版本),文件有:
- ofbiz.log.? - 记录所有OFBiz生成日志信息。此文件将在满时自动循环创建新文件,即ofbiz.log是当前日志文件,ofbiz.log.1是较早些时间的日志文件,ofbiz.log.2是比ofbiz.log.1更早时间的日志文件,以此类推。
- console.log - 记录所有OFBiz在控制台界面运行显示的内容。也有可能无效。
- access_log.? - 类似于Apache httpd日志格式记录所有服务请求。很漂亮但对调试没有什么用处。

大多数据时间,你可以通过ofbiz.log或console.log来查询调试信息。因为它们有很多内容,所以你最好使用一个可以翻页与进行查找的编辑器来打开这些日志文件。


3、查找日志信息
Java日志信息最容易查找。它们的日志信息中通常有类名与行号生成:
111770[PaymentGatewayServices.java:776:INFO ] (Capture) Invoice [#10110] total: 38.54

Minilang方法日志中的类名均为Log.java,如:


在beanshell中增加日志信息,同样使用Debug方法,但在内容中忽略如""这样内容。

在freemarker中增加日志信息,只需要显示你打算跟踪的变量,如:
   * 在"inventory_item"表的插入/修改操作时违犯"inv_item_facility"外键约束。

Error calling event: org.ofbiz.webapp.event.EventHandlerException: Service invocation error (Commit transaction failed)
   * 这是一个非常令人讨厌的错误信息。通常它意味着你访问的服务所触发的ECA链服务中有一个服务失败,于是导致全部的操作失败。服务引擎无法为你进一步跟踪,所以你需要进入log文件中进一步查找错误原因。访问你的logs/ofbiz.log 或logs/console.log文件去了解触发错误的根本原因。

Unable to bind UserTransaction/TransactionManager to JNDI
   * 这是在opentaps 0.8/0.9及OFBiz的pre-Geronimo版本在Linux系统下可能会发生的一个问题.  解决方法可以在以下网址中找到:  
     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属性格式,所以你需要确认你在文本字段后放置?xml。

本文档译自ofbiz 4.0 cookbooks,本人翻译,欢迎转载,请注明出处.

热点排行