ofbiz技术预研

1    Ofbiz观点&评价

1.1        正面观点

首先 Ofbiz 是开源的,集成了很多优秀的开源技术: Ant , Freemarker , Jboss 等等。

其次功能强大,拥有已经开发好的,并且稳定的工作流引擎,用户权限系统,前台电子商务系统,后台订单处理,库存管理系统,客户管理等等。

Ofbiz提供了一套基于JAVA的功能扩展方案,可以在目前最基本的功能上添加新的功能。并且基于Component组件开发,对于不需要的功能可以将相应Component去除掉。

OFBiz开发时不用频繁地重启服务器,一些文件修改后下一次访问时可直接与未改文件"会师",用为数不多的代码实现一些基本功. ... 还有一个大大的优点:OFBizPHP世界编程里的方便快捷与Java世界编程里的层次分明给很好地结合了起来,这个我已感觉到了.

 

1.2        负面观点

虽然说Ofbiz提供了一整套功能扩展方案,但是其过程十分繁琐。

实现一个最简单的功能(比如读取一张用户表的信息),需要进行配置的文件就有十几个。

对于数据库的操作进行了非常强大的封装,拥有Ofbiz引以为傲的Entity Engine(有点像Hibernate,不过比Hibernate还要猛,一句SQL语句都不用)。只需要在相应Component entityengine.xml对要操作的实体(对应表)进行定义,并且定义在特定服务中的增删改查方法即可。这样说好像很好用的样子,但是实际上,需要付出非常多的时间和精力去学习这套东西,并且学习曲线会很大。

Ofbiz本身自带的功能如果不符合我们自己的需求,基本上很难进行修改,而是应该重新开发对应的功能。比如它的Order Processing跟目前我们公司的订单管理存在很大的差距。所以我们必须重构。而这都需要付出很大的代价。我们考虑使用Ofbiz的原因主要是想要在其强大功能的基础进行快速的扩展,但是如果很多功能都需要重构的话,那么就得不偿失了。

 

2    环境配置

参考地址:http://blog.csdn.net/xiaoliouc/article/details/10223095   ofbiz12.04环境搭建

http://blog.csdn.net/hezhipin610039/article/details/24289317 如何让OFBIZ使用中文界面

托管外网服务器:219.232.239.9  root/!@#$%QWERThpv

2.1        ofbiz下载&安装

Ø  1.下载ofbiz

ofbiz下载地址:http://ofbiz.apache.org/download.html

下载apache-ofbiz-12.04.02.zip,解压安装到目录h:\ofbiz,目录结构如下:

Ø  2.安装配置ant,用于安装可运行的ofbiz包,如下:

取得ant安装包apache-ant-1.8.1-bin.tar.gz,解压缩到安装目录(如:E:\开发安装工具\apache\apache-ant-1.8.1),配置环境变量:

  

Ø  3.Mysql数据库配置

更新JDBC驱动,将mysqljdbc驱动拷贝到${Ofbiz_Home}/framework/entity/lib/jdbc 目录下。 
如果忘记了驱动,安装的时候,会报如下错误: 
     [java] Exception:java.lang.ClassNotFoundException 

     [java] Message: Cachedloader got a known bad class name:com.mysql.jdbc.Driver 
     [java] ---- stack trace------ 

2).设置实体引擎(Entity Engine)的默认数据库为mysql.${Ofbiz_Home}/framework/entity/config/entityengine.xml配置文件进行修改: 

将红色标识处改为localmysql

本地安装mysql,创建数据库ofbiz,根据mysql的的配置修改修改红字标识处为“utf8utf8_general_cixx,root,root50

Ø  4.构建、运行服务器
//安装OFBIZ演示数据:大约需要15分钟

>ant load-demo

运行成功后,将自动根据连接数据库ofbiz,创建相应的数据库对象。

继续,启动OFBiz

>ant start

启动后,控制台不断刷新信息,应该是在执行一些定时任务之类的程序,

Ø  5.浏览器测试访问

可用浏览器访问如下

http://localhost:8080/ecommerce/

2.2        FreemarkerEditor插件安装

2.2.1       方法1

参考地址:http://blog.csdn.net/lzkkevin/article/details/6674708

Ø  1.下载Freemarker插件

下载地址:http://sourceforge.net/projects/freemarker-ide/files/

Ø  2.将plugins下文件放到eclipse的plugins目录下,即可。

Ø  3.查看效果

2.2.2       方法2

Ø  eclipse--> Help --> Install New Software --> Add --> Location 输入 http://download.jboss.org/jbosstools/updates/development/,如果只是需要freemarker编辑器,安装时只要勾选其中freemarker一个选项就行。

2.3        Groovy插件安装

参考地址:http://www.cnblogs.com/kevincollins/archive/2009/03/25/1505681.html

 

3     ofbiz框架

3.1        源码结构

3.1.1       目录

名称

描述

Application

包含ofbiz核心应用程序组件:accounting(账户管理)、humanres(人力资源管理)、order(订单管理)、manufacturing(生产管理)、marketing(市场管理)、order(订单管理)、product(产品管理)、party(组织管理)、content(内容管理)、workeffort(工作成果),以及扩展应用commonext(公共扩展)、securityext(安全扩展)。Component-load.xml文件配置需要载入哪几个应用程序组件。每个组件都是基于ofbiz构建的web应用程序。

Framework

框架目录,包含OFBiz框架的组件,如实体引擎、服务引擎,这是ofbiz框架的核心,其他应用程序都是基于它来构建的。Componet-load.xml文件配置需要载入哪几个框架组件

Specialpurpose

专门目录,包含一些其他的应用程序,不是ofbiz核心的一部分。

Hotdeploy

热部署目录。它的组件能够被删除和自动载入,本目录的所有组件,都会在framework和application目录下的组件导入后导入。

Runtime

运行时数据,是指OFBIZ运行时产生的日志, 或者安装时生成的配置文件以及其他的临时文件。为什么会有运行时的数据?这个是因为目前的OFBIZ本身嵌入了tomcat,用David的原话翻译过来是 说,目前是OFBIZ里面嵌入了tomcat,而不是tomcat下面运行着OFBIZ。

specialpurpose

特殊用途。里面存放OFBIZ开发人员为某些特殊 领域或者模块定制的功能,例如:pos、googleCheckout、ebay、ecommerce等等

themes

界面相关的主题包。

tools

工具

 

 

 

3.1.2       配置文件

名称

位置

描述

component-load.xml

applications目录下

framework目录下

文件配置需要载入哪几个应用程序组件。这里的每一个组件,都是一个基于OFBIZ 构建的Web 应用程序。

ofbiz-component.xml

 

主要的配置文件,需要注意的一些东西:
(1)<classpath type="jar" location="build/lib/*"/> 这是jar引用路径,我在考虑是否可改成直接引用class文件,也就是直接设置class文件所在的目录;

(2)title="Study" 这个就是我们通过appbar.ftl文件在主界面显示的那一排按钮上显示的内容,可根据需要调整,调整完要重启OFBiz,麻烦,可以考虑通过hot-deploy目录进行发布。

entityengine.xml

framework\entity\config\

实体引擎配置,主要是配置该数据的方式,如通过oracle访问,就配置一下localoracle,特别需要注意的是,在dataSource中配置中,一定要配置一个属性 - schema-name="OFBIZ",这个主要是为了在OFBiz启动时能够正常同数据库的对象进行匹配,如果没有进行配置,每次都会试图重新建立对象,会报对象名已经被占用的情况。

serviceengine.xml

framework\service\config\

服务引擎配置,这个基本上不用作太大的修改,如要必要,可在这里边进行一些参数的调优,比如访问线程数配置等。

3.1.3       重要类

http://blog.csdn.net/hezhipin610039/article/details/6906031

工具类主要在包org.ofbiz.core.util中。

名称

路径

描述

UtilProperties

 

属性文件访问工具类

UtilMisc

 

MapList对象操作工具类

UtilFormatOut

 

通用格式化输出工具类(主要用在 Jsp文件或View Helper中)。

 UtilURL

 

得到文件流的URL地址类。

UtilCache

 

缓存管理类。

UtilValidate

 

通用数据输入输出数据校验(合法性和有效性)类,可任意扩展。

UtilDateTime

 

java.util.Datejava.sql.Date格式的日期/时间处理类。

StringUtil

 

增强的字符串处理类。

UtilXML

 

增强的符合JAXP & DOM 规范的XMl解析器处理工具类。

SiteDefs

 

常数定义类,定义所有Web 程序用到的和环境有关的常量。

Debug

 

格式化输出程序调试信息类。

HttpClient

 

模拟一个HttpServlet请求类。

HttpRequestFileUpload

 

接受一个通过Http上传的文件工具类。

SendMailSMTP

 

符合SMTP协议的邮件发送处理类(实现发送邮件服务器的功能)。

DatabaseUtil

\framework\entity\src\org\ofbiz\entity\jdbc

工具类生成的建表SQL

 

4     Ofbiz应用访问路径

url路径

说明

http://localhost:8080/ecommerce/

电商网站demo

http://localhost:8080/webtools/

可访问到后台页面(登陆名为admin 密码为ofbiz

 

 

5     Ofbiz扩展

5.1        Ecommerce中文化

参考地址:http://blog.csdn.net/hezhipin610039/article/details/24289317

1.修改framework\common\config\general.properties,修改如下:

country.geo.id.default=US  --CHN

currency.uom.id.default=USD  --CNY    

locale.properties.fallback=en  -zh_CN

2. 登录ofbiz后台http://localhost:8080/webtools/    @admin/ofbiz

找到目录管理->店铺->编辑店铺,找到本地化,设置语言为zh,货币为CNY即可,如图:

  

3. 后台中文化

找开文件:framework\common\widget\CommonScreens.xml

找到GlobalDecorator,在<actions>之后加入

<scriptlocation="component://common/webcommon/

WEB-INF/actions/includes/setLocale.groovy"/>

framework\common/webcommon/WEB-INF/

actions/includes/下建文件setLocale.groovy

setLocale.groovy中写入以下代码

org.ofbiz.base.util.UtilHttp.

setLocale(request,"zh_CN");

 

5.2        修改前台和后台的访问端口

http://tristan1.iteye.com/blog/359892

ofbiz\framework\base\config\ofbiz-containers.xml

ofbiz\framework\webapp\config\url.properties

5.3        电子商务软件功能手册

参见《OFBiz软件功能手册-电子商务.docx》

6     学习

6.1        相关地址

Ofbiz官网:http://www.ofbiz.org

Ofbiz中文社区http://www.ofbizchina.com/

http://www.blogjava.net/wealupa/archive/2007/04/19/111971.html

http://www.cnblogs.com/sunsonbaby/archive/2004/11/29/70718.html

6.2        例子

6.2.1       Practice

 

>java -Xmx256M -jar ofbiz.jar   (the -Xmx256M 命令仅保证程序有足够的内存)。

测试访问路径:

http://localhost:8080/practice/control/main

http://localhost:8080/practice/control/person

6.2.2 Hello

测试访问路径:

http://localhost:8080/hello

 

7     命令集

启动ofbiz命令:

>java –Xmx256M–jar ofbiz.jar

8     技巧集

8.1        ofbiz和应用服务器结合

参考地址:http://blog.csdn.net/kongqz/article/details/3738309

1. 执行如下命令,会在ofbiz根目录下生成一个setup目录

f:\ofbiz> java –Xmx256M  -jar ofbiz.jar -setup tomcat6

2.将setup目录下生成的tomcat6中的文件覆盖到tomcat6的相应位置(根据文件名找到相应文件进行覆盖)

3、启动tomcat就可以启动你在ofbiz的hot-deploy目录中部署的相关项目了。这个时候你可以在tomcat的根目录下看到一个temp目录,下边有ofbiz/hot-deploy/下的项目所有项目的缓存文件。

8.2        使用eclipse来调试 ofbiz

参考地址:http://www.myexception.cn/eclipse/1342727.html

http://www.yuendong.com.cn/info.asp?id=150

1.   Eclipse中导入ofbiz项目(mport -> existingprojects into workspace);

2.   Ofbiz项目右键选择Debug as ->Debug Configuration,如下图(记得一定要与图中对照一致,不然可能出现java.util.MissingResourceException: Can't find bundle for base name错误),

Main面板:main class输入org.ofbiz.base.start.Start。

Argument面板:VM arguments里 : -Xms128M-Xmx1024M -XX:MaxPermSize=512m。

Classpath面板,去掉ofbiz (default classpath),这里边看起来应该是这样的 org.ofbiz.base.start.Start:
Bootstrap Entries:- JRE SystemLibrary(你的jdk)
User Entries:- ofbiz.jar - 你的ofbiz.jar的目录
Environment面板 选择New (variable = LC_ALL, value = C )

Source面板:Add选择Java Project,后选择你的工程就可以,因为你的源代码都在里面。

    

3.     通过以上配置,你可以在这里直接启动系统,并且可以debug模式启动,可以设置断点调试。

4.     配置好后,可以用如下快捷键方式,启动debug

这样,直接以debug方式运行调试,不用再在控制台上费劲的查看信息了。

8.3        Eclipse控制台console行数增大,方便查看更多信息

Preferences-Run/Debug-Console里边,去掉对Limit console output的选择,或者选择,设置一下buffersize的设定值

8.4        tool目录下工具命令的使用

tool目录中可使用bat、sh等命令构建或部署、执行指定任务的程序,可以自行编写脚本。

8.5        runtime目录下查看应用的运行状况

应用部署运行后,在runtime下生成服务器的工作目录,运行时的日志信息,运行或调试时可以查看,方便跟踪解决问题。

9     问题集

9.1        注意项

1.        在配置一个OFBiz时,路径中千万不要包含空格,要不然老提示出错,无外乎是scoket write error之类的信息,会让你郁闷得不停^_^。

2.        按《ofbiz教程》 其中有一处错误MainAppBar改为PracticeAppBar,否则会报错。

9.2        问题

9.2.1       The methodgetContextPath() is undefined for the type ServletContext

9.2.2       引入类文件报错The declared package "org.ofbiz.hello"does not match the expected package ""

解决方法:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章