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 ""

解決方法:

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