Pentaho技術白皮書中文版(一)----用 Eclipse 構建和除錯 Pentaho

冰峰bf發表於2015-12-27

Pentaho是一個以工作 流為核心的、強調面向解決方案而非工具元件的BI套件,整合了多個開源專案,目標是和商業BI相抗衡。它偏向於與業務流程相結合的BI解決方案,側重於大 中型企業應用。它允許商業分析人員或開發人員建立報表,儀表盤,分析模型,商業規則和 BI 流程。

功能和特點
◆ 工作流引擎:Shark and JaWE
◆ 資料庫:Firebird RDBMS
◆ 整合管理和開發環境:Eclipse
◆ 報表工具:Eclipse BIRT
◆ ETL工具:Enhydra/Kettle
◆ OLAP Server:Mondrian
◆ OLAP展示:JPivot
◆ 資料探勘元件:Weka
◆ 應用伺服器和Portal伺服器:JBoss
◆ 單點登陸服務及LDap認證:JOSSO
◆ 自定義指令碼支援:Mozilla Rhino Javascript指令碼處理器


這篇文件的目的是教會開發人員如何開始進行 Pentaho 的開發。這篇文件解釋瞭如何在 Eclipse 中設定一個開發環境,包括如何連線到 Pentaho Subversion repository,檢出 Pentaho 專案,使用一個 '1stand-alone'1 Java 應用和 Eclipse JBoss IDE 來構建除錯它們。這篇文件也解釋了 Pentaho repository 結構和對於開發Pentaho 來說,許多很重要的 build targets。

目標讀者是軟體開發人員。我們假設讀者已經很熟悉 Eclipse 平臺和 Java 開發。如果目的是將平臺配置為一個 J2EE 應用,我們假設讀者瞭解 J2EE 和應用伺服器。我們此處就是使用 JBoss 應用伺服器進行演示。雖然不是很重要,但如果讀者有使用 Apache Ant 的經驗也會很有用處。

如果你仔細閱讀了這個指南中的說明,但仍沒有解決你的問題,請到論壇尋找答案: http://forums.pentaho.org/.

01. 設定你的環境


以下是開始研究 Pentaho,你需要使用的工具列表。推薦你現在就下載所有必需的包,這樣你就可不間斷的進行試用。

1. 一個 Java SDK:Pentaho BI Platform 在 Java SDK 1.4 上構建和測試。注意你需要完整的 SDK,而不僅僅是 runtime (JRE)。

2. Ant:基於 Java 的構建工具。

3. Eclipse:平臺 IDE。

4. Subclipse:一個 Eclipse 外掛,其在 Eclipse IDE 上新增了 Subversion 整合。

5. JBoss IDE for Eclipse。

為開始設定:

1. 下載和安裝你的 Java SDK。

2. 下載和安裝 Ant。

3. 下載和安裝 Eclipse。

4. 下載和安裝 Subclipse。

5. 下載和安裝 JBoss IDE for Eclipse。

以後章節是關於 Pentaho 團隊使用的這些工具的版本說明,以及使環境適合於 Pentaho 平臺 codeline 開發的技巧。每個工具在其各自的下載中有詳細的安裝指令,這裡我們不詳細介紹。

Java SDK

Pentaho BI Platform 在 Java SDK 1.4 上構建和測試。注意你需要完整的 SDK,而不僅僅是runtime (JRE)。在後面幾步中,你會看到為了使 Ant 構建指令碼正確執行,你必須指定 Java 編譯器可執行程式(javac)。這個可執行程式位於你安裝的 Java SDK 的 /bin 目錄下,因此記住你將 SDK 安裝到了哪裡。

Ant

Ant 是一個基於 Java 的構建工具,我們將之用於構建平臺,以及支援用 Eclipse 進行 Pentaho 進行開發中的活動。目前用於構建 Pentaho 的可下載的二進位制的版本是Ant 1.6.5建議使用 Ant 工具從命令列構建一些 Pentaho Ant targets(在某些環境下是必要的)。

Eclipse IDE 中自帶了 Ant 的一個版本。這個版本被 IDE 用於構建功能,為了作為 Eclipse 的外掛可能也進行了一些修改。為確定 Eclipse IDE 中的 ant 版本,從 Eclipse 頂部的 Window 選單瀏覽至Preferences... | Ant | Runtime,在外掛的路徑中檢查其版本。

Eclipse IDE

只是最近在設定你的 Pentaho 開發環境時,才需要有一個 Eclipse,但與 Pentaho 的程式碼沒啥關係。如果你想在 JBoss 應用伺服器中執行和除錯程式碼,你需要 JBoss IDE (參考下面),那裡有一些相容性問題(IDE 的最新版本在 Eclipse 的最新版本上好像有些問題)。Pentaho 團隊使用的是以下版本,這些配置是沒問題的:

1. JBoss 網站下載帶有最新 JBoss IDE 外掛的 Eclipse– 帶有 JBoss IDE version 2.0.0beta2Eclipse IDE 版本 3.2.1.

2. Eclipse 網站下載 Eclipse 3.2.1 M20060921-0945然後從JBoss 下載和安裝 JBoss IDE 外掛版本 2.0.0 beta2。

Subclipse

Subclipse 是 Eclipse 的一個外掛,在 Eclipse 環境上啟用 Subversion 功能。Subversion 是大多數 Pentaho 專案使用的原始碼控制庫。Subclipse 利用了 Eclipse Update Manager,其允許你用一個 URL 進行註冊,在 Eclipse IDE 上自動獲取和安裝外掛。和我們的配置相容的 Subclipse 版本是 Subclipse 1.2.x。你可在Tigris.org網站找到詳細的安裝指令,或按照以下簡短的指令:

在 Eclipse 中,選擇選單條 Help | Software Updates | Find and Install...

1. 在嚮導的第一步中,選中 "Search for new features to install",點選 "next" 按鈕。

2. 在下一步中,點選按鈕 "New Remote Site..."。

3. 在彈出式視窗中,輸入你選擇的站點名,輸入以下url:http://subclipse.tigris.org/update1 .2.x點選 "OK" 按鈕。

4. 在下一步中,你應該看到一個可從中選擇的功能列表,選擇適合於你的 Eclipse 版本的 "Subclipse plugin"。

5. 允許外掛安裝完成。使用 Subclipse的詳細命令,請到 Eclipse Help 選單,選擇 Help Contents,然後在內容表中瀏覽 Subclipse 樹。

JBoss IDE

如果你想在 JBoss 應用伺服器中除錯,那麼你需要安裝 Eclipse 的 JBoss IDE 外掛。如果你下載了打包的 Eclipse\JBoss IDE 包,這樣你就不需要安裝 JBoss IDE 外掛 – 你已經有了。Eclipse 的JBoss IDE 外掛是一個工具,允許你一步步的除錯在一個 JBoss 應用伺服器中作為一個 web 應用的一部分執行的 Java 類。

JBoss IDE 外掛通常通過 Eclipse Update Manager 獲取。然而,在這篇文件寫作時,JBoss IDE 版本2.0.0beta2 並沒有安裝命令,文件或到 Update Manager 的連結。That's what we get for using a development build。這並不是一個問題,它很簡單,我們會盡力描述。

從此處獲取 JBoss 外掛:

1. 下載外掛,JBossIDE-2.0.0.Beta2-ALL.zip (不是 plugin\Eclipse 包!)。

2. 將包解壓進你的 eclipse 安裝目錄 – 不是 zip 檔案中 /eclipse 開頭的那個目錄結構。

3. 啟動\重啟 Eclipse。

一旦你成功安裝了 JBoss IDE 外掛,繼續到下一節。在 "Debugging in JBoss Application Server" 這個練習中,我們會介紹如何配置外掛用於除錯。

02. 探索 Pentaho Repository

This page last changed on Nov 30, 2006 by bhagan.

Pentaho BI Platform 程式碼位於 Subversion repository 中的 svn://source.pentaho.org/如果你沒有使用Subversion 的經驗,不要怕 – 這裡有本線上電子書:http ://svnbook. red-bean.com.

Subversion 中的 Pentaho 專案是:

l pentaho – 主要的 Pentaho 原始碼樹

l pentaho-cubedesigner – 用於連線到關係資料來源的,嚮導驅動的圖形使用者介面的原始碼,定義了 analytical dimensions,確定了用於分析的 measures 或 "facts"。

l pentaho-data – 預設 sample 資料庫

l pentaho-designstudio - 用於構建和測試 Action Sequence documents 的圖形 eclipse 環境的原始碼。

l pentaho-designstudioIDE – 本質上是帶有 build 檔案的 eclipse,其將安裝 pentaho action-sequence-plugin 和 splash screen。

l pentaho-preconfiguredinstall - 預配置的 Jboss 應用伺服器的原始碼。

l pentaho-reportdesigner - 建立 JFreeReports 的 standalone designer 的原始碼。

l pentaho-reportwizard - 建立 JFreeReports 的 standalone 嚮導的原始碼。

l pentaho-solutions - sample solutions。

l pentaho-standalone - 單獨執行平臺的 Java 應用的程式碼,沒有一個 J2EE 應用伺服器。

我們一直致力於保持簡單健全的專案結構和開發團隊。下面會描述這篇文件中將要探討的專案的描述:

l pentaho

l penta ho-data

l pentaho-solutions

l pentaho-preconfiguredinstall

l pentaho-standalone

在這篇文件裡,我們不會討論 Pentaho 客戶端工具:

l pentaho-cubedesigner

l pentaho-designstudio

l pentaho-designstudioIDE

l pentaho-reportdesigner

l pentaho-reportwizard

pentaho 專案

pentaho 專案有原始碼,資源和 Pentaho BI 平臺的專案設定。在這個專案裡,你可瀏覽平臺程式碼和體系結構。

目錄/檔案

描述

/pentaho

原始碼樹的根目錄。

/cobertura

包含庫,用於確定單元測試應該覆蓋程式碼中的多少百分比。

/scripts

包含用於構建 Preconfigured Install 時使用的 startup 指令碼。

/server

伺服器程式碼的 Source tree。

/third-party

包含 lib 目錄,包含編譯和構建所需的所有第三方庫。

.classpath

設定專案 classpath 的 Eclipse 檔案。

.project

描述專案的 Eclipse 檔案。

build.xml

用於 Pentaho 專案的 Ant build 檔案。

default.properties

用於構建 Pentaho 專案的屬性,通過在相同的目錄中,建立一個override.properties 檔案,並在其中增加你想覆蓋的那些屬性的方法來覆蓋這個檔案中的屬性。

deployment_build. properties

deployment_build .xml 所用的屬性檔案。

deployment_build.xml

Build 檔案,其包含用於構建 appserver specific deliverables 的 targets。它被build.xml 使用,作為 j2ee deployments 的一部分。

excludejars.generic

文字檔案,列出了那些不應該被包含在 .war 檔案中的 jars,其在 build 檔案中用於tomcat-war target。

excludejars.jboss

文字檔案,列出了那些不應該被包含在 .war 檔案中的 jars,其在 build 檔案中jboss-war target。

pentaho-data 專案

Pentaho BI Platform 帶有一套預設資料庫(使用 Hypersonic SQL) 來容納幾個功能元件和子系統所必需的 repositories。為了使得平臺的這些 parts 能執行,你需要這些 repositories。這個資料存在於模組'pentaho-data'。Pentaho-data 也包含資料庫的啟動和關閉指令碼。

目錄/檔案

描述

/pentaho-data

資料庫樹的根目錄。

/hibernate

包含用於 Hypersonic SQL 的平臺 repository 指令碼。

/quartz

包含用於 Hypersonic SQL 的 Quartz scheduler 指令碼。

/sampledata

包含用於 Hypersonic SQL 的 sample 資料指令碼。

/shark

包含用於 Hypersonic SQL 的 Shark 工作流指令碼。

sta rt_hypersonic. bat

Windows 平臺的啟動批處理檔案,用於啟動 Windows 上的資料庫。

start-hypersonic.sh

*nix 平臺上的啟動批處理檔案,用於啟動 *nix 上的資料庫。

stop_hypersonic.bat

Windows 平臺上的關閉批處理檔案,用於關閉 Windows 上的資料庫。

stop-hypersonic.sh

*nix 平臺上的關閉批處理檔案,用於關閉 *nix 上的資料庫。

重要:

'pentaho-data' 模組是一個 standalone 元件,其充當一個資料庫伺服器。專案中提供的指令碼用於啟動和關閉Hypersonic 資料庫。指令碼依賴於 Hypersonic jdbc 類,其位於 'pentaho-data 目錄中的一個 /lib 目錄中。因此為了使得這些指令碼正確執行,你需要將 Hypersonic driver jar 放在指令碼需要的位置,如下所示:

1. 在 'pentaho-data' 目錄中建立一個名為 lib 的目錄。

2. 將 Hypersonic jdbc driver .jar 檔案 (hsqldb.jar) 複製到 lib 目錄。建議你從 'pentaho'專案的 third-party/lib 目錄中獲取這個檔案,因為那個版本比較可靠。

pentaho-preconfiguredinstall 專案

preconfigured-install 專案包含一個完整的 JBoss 應用伺服器,配置並調優來執行 Pentaho BI 平臺程式碼。JBoss 應用伺服器目錄結構的詳細資訊請參考JBoss Wiki

pentaho-solutions 專案

如果你的目標是將平臺設定為一個 web 應用,或僅僅作為你自己的 solutions 的起點,你需要從 Subversion 獲取最新的 samples。設定 samples 是一個相對小的練習,提供了一個很好的方式來測試你的配置中的各種元件。

samples 位於名為 '1pentaho-solutions'1 的專案中。pentaho-solutions 專案包含一套samples,其演示了平臺的幾種元件功能,還包括一套 clean 配置檔案。

為執行 samples,你也需要下載預設的 Hypersonic 資料庫。獲取資料庫的詳細命令請參考上一節。

目錄/檔案

描述

/pentaho-solutions

solution tree 的根目錄。

/admin

administrative samples 的根目錄。

/samples

sample solution 的根目錄。

/system

系統目錄,其包含所有平臺和元件配置資訊。

/test

test solution 的根目錄。

重要:將 samples 下載到一個目錄,其是你的應用伺服器的根目錄的兄弟目錄。不用進行任何配置上的修改,web應用會找到"pentaho-solutions" 目錄,只要其如上所述作為 app server 的兄弟。

pentaho-standalone 專案

pentaho-standalone 資料夾有一個簡單的 solution,平臺庫和 dependencies,以及不使用 J2EE 應用伺服器,單獨執行平臺的 Java 應用的程式碼。

目錄/檔案

描述

/resource

resource 目錄,包含我們例項的 solution 檔案。這些檔案很類似於包含在我們的 demo 中的那些。在我們的 solution 中,有兩個 action sequences:'Hello World' 和 'Simple Report'。如果你瀏覽resource/solution 目錄,你會看到用於 action sequences 的檔案。

/src

src 目錄包含原始碼,用於以一個 standalone Java 應用來執行平臺。

/.classpath

設定專案 classpath 的 Eclipse 檔案。

/.project

描述專案的 Eclipse 檔案。

/build.xml

Pentaho 專案的 Ant build 檔案。

03. 建立 Repository 連線

This page last changed on Mar 01, 2007 by gmoran.

Eclipse 是 Pentaho 團隊選中的 IDE,一直使用 Subclipse 作為 Subversion 外掛。外掛提供了 "SVN Repository Exploring Perspective",你可從中建立一個連線。

為使用 Subclipse 外掛建立一個連線:

1. 在 SVN Repository Exploring 透檢視中,右擊,選擇 New,選擇 Repository Location,就會出現 Add New Repository Location 對話方塊。

2. 在 Url 核取方塊中,輸入 svn://source.pentaho.org/svnroot.

3. 點選 Finish。現在你就有了一個到 Subversion repository 的連線。

展開,會看到專案。通常對於 Subversion repositories,每個專案有 3 個子目錄:branches,tags 和 trunk。project/trunk 目錄有最新的程式碼,很可能是你想要檢出的。"pentaho" 專案結構的完整解釋請參考02. Exploring Pentaho Repository Structure

04. 檢出專案

This page last changed on Feb 26, 2007 by gmoran.

Eclipse 有幾種不同型別的專案,Pentaho 使用簡單的專案和 Java 專案。簡單專案有最基礎的 Eclipse 專案配置和能力,和檔案瀏覽沒啥差別。Java 專案包含需要編譯和配置檔案的原始碼,例如.classpath 檔案, 其將設定原始碼樹中的 \lib 子目錄下的庫檔案。pentaho-data,pentaho-solutions 和 pentaho-preconfiguredinstall 專案都是 Eclipse 簡單專案。pentaho 專案和 pentaho-standalone 專案都是Eclipse Java 專案。

你從 Subversion 獲取模組的推薦結構是以兄弟目錄下載它們 – 這個結構使得平臺能自動找到你的solutions 目錄,也使得跟蹤不同的模組更容易。

在檢出 pentaho 專案之後,你立即會注意到(如果你啟用了 "Build Automatically" 設定) 那個專案正在被編譯。編譯過程中可能會出現警告資訊,但是沒有編譯錯誤。耐心點,這個任務會持續一分鐘,依賴於你的計算機的速度。pentaho-standalone 專案不會自動編譯,因為在專案能執行前,必須先完成一些設定步驟。

為完成這篇文件中的例子,你需要檢出以下專案:

l pentaho

l penta ho-data

l pentaho-solutions

l pentaho-preconfiguredinstall

l pentaho-standalone

獲取不同的 Codelines

此處,你可能想獲取平臺的最新程式碼,那就是構建好,用於我們下一次釋出的 codeline,版本 1.6。或,如果你正研究最新版本中的一個問題,你可能需要版本 1.2.x。下兩節解釋瞭如何獲取程式碼的 1.2 分支中的一個版本,而不是最新版本,Subversion 術語中,這稱之為 " trunk"。

為獲取原始碼,你可簡單的從命令列中向 Subversion 釋出一個命令,或通過你喜歡的 Subversion 客戶端應用。我們一直使用 Subclipse。

獲取最新程式碼

在 SVN Repository 檢視中,展開你的 repository 連線,之前,我們已經建立了svn ://source. pentaho.org/svnroot.

1. 展開一個專案。在這個例項中,我們使用 pentaho。

2. 右擊 trunk。

3. 從右鍵選單中,選擇 Checkout... Checkout from SVN wizard loads。

4. 按照嚮導中的命令,將專案檢出到你的 workspace。將新的 Eclipse 專案命名成和 Subversion 中的專案相同的名字。

5. 為之前列出的每個專案重複這些步驟。

在你檢出 pentaho 專案之後,如果它沒有自動編譯,從 Project 選單中手動編譯。從左邊的檢視中選擇pentaho 專案,然後從 Project 選單中,選擇 'Build Project' 選項。僅有 pentaho 專案需要被編譯。剩下的專案是簡單專案,不需要編譯。

如果你遇到了出錯資訊,在繼續之前,採取必要的措施解決它們。當首次設定專案時遇到編譯錯誤的典型原因就是模組結構沒有采用推薦的層次結構,或 /lib 目錄或.classpath 檔案中少了一個第三方庫。如果仍然不能解決,我們可以提供幫助。將 Eclipse 報出的編譯錯誤提交到我們的論壇:http://forums.pentaho.org很多專案成員和 Pentaho 開發人員會提供幫助。

Get Version 1.2.x Codeline

在 SVN Repository 檢視中,展開你的 repository 連線。之前,我們建立了svn ://source. pentaho.org/svnroot.

1. 展開一個專案。在這個例項中,我們將使用 pentaho。

2. 展開 branches。

3. 右擊 1.2。

4. 從右擊選單中,選擇 Checkout... Checkout from SVN wizard loads.

5. 按照嚮導中的指令將專案檢出到你的 workspace。將新的 Eclipse 專案命名成 Subversion 中的專案使用的相同名字。

6. 為之前列出的每個專案重複執行這些步驟。

在你檢出 pentaho 專案之後,如果它沒有自動編譯,從 Project 選單中手動編譯。從左邊的檢視中選擇pentaho 專案,然後從 Project 選單中,選擇 'Build Project' 選項。僅有 pentaho 專案需要被編譯。剩下的專案是簡單專案,不需要編譯。

如果你遇到了出錯資訊,在繼續之前,採取必要的措施解決它們。當首次設定專案時遇到編譯錯誤的典型原因就是模組結構沒有采用推薦的層次結構,或 /lib 目錄或.classpath 檔案中少了一個第三方庫。如果仍然不能解決,我們可以提供幫助。將 Eclipse 報出的編譯錯誤提交到我們的論壇:http://forums.pentaho.org很多專案成員和 Pentaho 開發人員會提供幫助。

05. 探索 build.xml

This page last changed on Apr 26, 2007 by bhagan.

最近,我們改進了我們的 build 過程,為滿足不同需求,在 development build 中包含了 separating production build。在 1.2.x 和 trunk codelines 中,production build 使用 build.xml,當你在Eclipse 中開發時,你可使用 dev_build.xml。

dev_build.xml

你在最新的 codeline 下開發所應該使用的 build 檔案是 dev_build.xml。這個 build 檔案是特別編寫的,用於在 preconfigured install JBoss demo server 上執行和除錯的開發人員(pentaho-preconfiguredinstall 專案包含 shell JBoss server application)。

dev_build.xml 依賴於 dev_build.properties 檔案獲取引數資訊。為適應你的環境,你可能想覆蓋幾種引數。為設定這些覆蓋,不需要修改 dev_build.properties 檔案!你需要建立一個override.properties 檔案,並在裡面指定你想覆蓋的引數。這樣當修改這些檔案時,你不必將你的修改合併進 properties 中。

Target: dev-setup

dev-setup target 是你應該主要關注的 target。一旦你有了 4 個主要 Pentaho 專案的原始碼,dev-setup Ant target 建立一個 fully populated,configured 和 deployed 的 JBoss app 伺服器,和Pentaho demo 應用。以下是 dev-setup 執行的步驟:

l 編譯所有原始碼

l 建立 pentaho-preconfiguredinstall 專案的一個副本,其是 JBoss app server shell。為指定這個副本的位置,設定你的 override.properties 檔案中的target.server.dir 屬性。

l 建立 pentaho-solutions 專案的一個副本,其包含 PCI demo 的 sample solutions。為指定這個副本的位置,在你的 override.properties 檔案中設定target.solutions.dir 屬性。

l 複製所有已編譯的類,.war 檔案,datasource 配置檔案和 miscellaneous jars 到目標伺服器目錄中,這些檔案都是 JBoss 執行 Pentaho 應用伺服器所必需的。

l 將 HSQLDB driver jar 複製到 pentaho-data 專案。pentaho-data 專案被設定作為一個 stand alone 資料庫伺服器,這就是為什麼 driver jar 需要在指定的位置可用,這樣啟動和關閉指令碼就可以正常工作。

l 修改 pentaho web 應用中的 web.xml 檔案,其導致 JBoss 伺服器自動重新載入 web 應用並立即應用修改。

第一次執行 target 時,執行以上所有的 actions,設定一個可除錯的環境。在之後的執行中,僅替換被修改的檔案。當你修改了原始碼,並想在 JBoss 應用伺服器中測試這些修改時,就應該執行這個target。

Target: clean-target-server

這樣構建 dev_build targets 的原因是可確保你的程式碼修改可立即在除錯環境中生效。你也能確保你除錯的環境中,沒有之前的執行或構建中的殘留檔案。clean-target-server target 刪除整個的target server 目錄,這樣下次執行 dev-setup 時,你再次有了一個乾淨的配置。

其他重要的 Property Overrides

為了在你的環境中成功執行構建,你應該在你的 override.properties 檔案中新增幾個其他的屬性:

l javac.path - 指定你的 Java 編譯器 (javac.*) 的路徑,例項:javac.path =d :/tools/j2sdk1 .4.2_07/bin/javac

l java1.4.home - 如果安裝了 java 1.5 SDK 和 1.4 SDK,java 1.5 是你的預設,指定 java1.4 home,因為平臺 SDK 推薦配置是 1.4。例項:java1.4.home=D:/tools/j2sdk1.4.2_07

06. 用 JUnit 除錯

This page last changed on Apr 05, 2007 by dkincade.

在 Pentaho 專案中走查程式碼的最簡單的方法就是使用一個 JUnit 測試用例(如果你不熟悉 JUnit,你可從此處獲取更多資訊,http://www.junit.org/index.htm)已經有很多 JUnit 測試用例用以測試平臺的單獨的元件功能和子系統了。其位於 pentaho 專案的原始碼樹:./server/pentaho/test/org/pentaho。Eclipse 有執行JUnit 測試的內建功能。僅僅選擇你想執行的測試用例(開原始檔),從 Eclipse的選單中選擇 Run. .New JUnit Test,按照 Eclipse 對話方塊中的提示進行操作即可,那些提示很直截了當。

07. 除錯 Standalone Platform 專案

This page last changed on Mar 02, 2007 by gmoran.

Standalone 專案,pentaho-standalone 是一個例項應用,它利用了平臺的能力,而沒有使用一個 J2EE 應用伺服器。專案包含一個 Java 應用,其執行 2 個 action sequences,將每個的結果寫進一個檔案。

在這一節中,我們將執行以下步驟:

1. 設定 standalone 專案;

2. 解釋使的 standalone 配置生效的程式碼和資源;

3. 最後,在 sample 程式碼上放一個斷點,演示 standalone 應用的除錯。

Standalone Project 設定

Standalone 專案依賴於 pentaho 專案。為使用 Standalone 專案,你必須首先執行一個 Ant target, sample-setup,其將為我們的例項用適當的庫組裝專案。為設定 Standalone 專案:

1. 從 Eclipse 的Java 透檢視下,選擇 build.xml 檔案,其位於pentaho-standalone專案的根目錄下。對此我選擇使用 Navigator 檢視(預設不可見),有幾個使得檔案選擇變得簡易的檢視 – 使用你最喜歡的那個。

2. 右擊 build.xml 檔案,選擇 'Run As...' 選項,然後選擇 'Ant Build...' 選項。

3. 出現一個 Ant Build 提示對話方塊。De-select any pre-selected targets,僅選擇 sample-setup target。

4. 選擇對話方塊底部的 'Run' 按鈕。你應該能在 Eclipse 的 Console 檢視的指令碼中看到 activity log。一旦 target 執行完成,你會看到資訊 "Build SUCCESSFUL"。

5. 在 Eclipse Navigator 檢視中,選擇專案的根資料夾:pentaho-standalone。右擊資料夾,選擇 'Refresh' 選項,這將重新整理子資料夾,這樣你會看到檔案被新增為 building 專案的結果。

現在可以逐步除錯專案了,但首先解釋一下專案的組成吧。

resource/solution 目錄

resource/solution 目錄包含我們例項的 solution 檔案。這些檔案很類似於包含在我們的 demo 中的那些。在我們的 solution 中有 2 個 action sequences,'Hello World' 和 'Simple Report'。如果你瀏覽resource/solution 目錄,你會看到 action sequences 的檔案。

原始檔

src 目錄中有以 standalone Java 應用方式執行平臺的原始碼。org.pentaho.app.SimpleCase.java 類是執行平臺和我們 solution 的主類。這個類初始化平臺,執行一個很簡單的 'Hello World' action sequence,然後執行一個很簡單的 JFreeReport action sequence。為了簡化,2 個 action sequences 的執行結果都寫進檔案。

public static void main(String[] args) { try {

Init.initialize ();

SimpleCase sCase = new SimpleCase(); sCase.simpleCase( args );

} catch (Exception e) {

e.printStackTrace ();

}

}

...

public void simpleHelloWorldCase( String outputPath ) {

try {

File f = new File( outputPath + File.separator + "hello _world.txt" );

FileOutputStream outputStream = new FileOutputStream(f);

HashMap parameters = new HashMap();

ISolutionEngine solutionEngine = SolutionHelper.execute( "Simple Case Example", "Hello

World",

"getting-started/HelloWorld. xaction", parameters,

outputStream );

} catch (Exception e) { e.printStackTrace ();

}

org.pentaho.app.Init.java 類僅有一個有趣的方法 – 初始化平臺的方法:

public static boolean initialize() {

try {

// We need to be able to locate the solution files. in this example, we are using the relative path in our project/package.

File solutionRoot = new File( "resource/solution" );

// Create a standalone application context - our application toolbox if you will - passing the path to the solution files.

IApplicationContext context = new

StandaloneApplicationContext (solutionRoot.getAbsolutePath(), new File (".") . getAbsolutePath ());

// Initialize the Pentaho system PentahoSystem.init( context );

return true;

} catch (Throwable t) { t.printStackTrace (); return false;

}

}

分步執行 Sample 程式碼

在 Eclipse 中逐步除錯程式碼對你來說應該已經很熟悉了,但此處我們提供一個例項。在你在 Eclipse 中執行 SimpleCase 類之前,首先你應該啟動 demo 資料庫。為啟動資料庫:

1. 瀏覽至 pentaho-data 資料夾,通過命令列,或使用你最喜歡的檔案瀏覽工具 – Eclipse 之外。

2. 在 pentaho-data 資料夾下,有 Windows OS 和 *nix 平臺下的啟動和關閉指令碼。執行適合於你的計算機的啟動指令碼(.bat 檔案用於 Windows,.sh 檔案用於 *nix)。

現在讓我們設定一個斷點,執行 SimpleCase main() 方法,這樣你可以看到執行中的開發過程。

1. 切換到 Eclipse Debug 透檢視,如果你沒在那裡。

2. 從 Eclipse 的很多檔案瀏覽檢視之一(我使用 Navigator),在 pentaho-standalone 專案中瀏覽至 src/org/pentaho/app/SimpleCase.java,開啟那個檔案。

3. 在 SimpleCase.java 檔案的 73 行設定一個斷點(從右鍵選單)(注意:如果程式碼修改過,這個行號很可能已經改變了。設定斷點的那行就是包含 Init.initialize() 程式碼的那行)。

4. 在你的檔案瀏覽檢視中右擊 SimpleCase.java 檔案,選擇 'Debug As...' 選項,然後 'Java Application' 選項,這將以一個 Java 應用啟動類。

5. 在你的斷點下,程式會停止執行。此處,你可在 Eclipse 中 step into,step over 或繼續執行。額外的除錯資訊,請注意 Console 檢視。

08. 用 JBoss IDE 除錯

This page last changed on Jun 05, 2007 by bseyler.

如果你已經執行了之前的設定步驟,現在就準備好除錯平臺了。假設你有我們此處列出的necessary projects,並可執行 a configured JBoss server以下是我們將執行的步驟:

1. 在 JBoss IDE 中配置一個伺服器。我們將使用它來執行 JBoss 應用伺服器,其中平臺被配置為一個web 應用。

2. 最後,我們將在平臺 Java 程式碼中設定一個斷點,執行 'Hello World' sample solution,從那個斷點走查程式碼。

配置 JBoss IDE Server

既然你已經將 pentaho web 應用複製進 pentaho-preconfiguredinstall 專案,是時候啟動 JBoss 應用伺服器,並確保一切正常。JBoss IDE 是一個很好的工具。易配置,一旦配置好,你所需要作的就是通過 IDE 啟動伺服器,這樣你就可除錯 Java 程式碼。

JBoss IDE 2.x.x 中配置一個伺服器

如果你想執行例項 "Debugging in JBoss Application Server",你需要確保你的計算機上沒有另一個應用使用埠8080。這是 JBoss 應用伺服器的預設埠。你也可改變伺服器使用的埠,you do not want to unnecessarily complicate your life at this point。如果埠 8080 被佔用了,推薦在執行應用伺服器時,臨時關閉使用埠 8080的應用。

這些命令對任何使用推薦環境(Setting Up Your Environmentdoc 中所述)的人均有效。

為在 JBoss IDE 中配置一個新伺服器:

首先,我們需要在 Eclipse 首選項裡設定一個 server runtime。

1. 從 Window 選單開啟首選項對話方塊。

2. 在左邊的樹中找到 'Server | Installed Runtimes'。

3. 在右邊的 pane 中,點選 'Add' 按鈕。

4. 對於 runtime type,選擇 'JBoss Server Adapter Runtime' under 'JBoss Inc'. (如果有多個選擇,例如 JBoss 4.0 Server Adapeter Runtime,選擇 4.0 版本)

5. 選擇 next。在下一個 pane 中,設定以下引數:

a. 將你的 runtime 命名為 'PCI Demo'。

b. 這部分很重要!對於 Home 目錄,瀏覽你的 dev_build (or override) properties file 中指定的 target 伺服器目錄!那就是你想除錯的伺服器,因為那就是 webapp 被配置到的地方(注意:你可確保你獲取了正確的屬性值,通過檢視 pentaho/dev_build.properties檔案,並找到了名為target.server.dir 的屬性值)

c. 將你的 JRE 切換至 1.4 JRE。如果你的 Eclipse 沒有配置 1.4 JRE,請立即配置。

6. 點選 OK 關閉對話方塊。

現在我們可配置一個新的伺服器:

1. 切換到 Eclipse Debug 透檢視。

2. 從 Window 選單,選擇 'Show View' 選項,然後 'Other...' 選項。

3. 會出現一個具有指定檢視的提示對話方塊。選擇 'Server' 選項,然後是 'JBoss Server View' 檢視。

4. 選擇 OK 按鈕完成。你會看到 JBoss Server View 出現在 Eclipse Debug Perspective 的底部。

5. 右擊 JBoss Server View window pane。選擇 'New... | Server' 選項。

6. 現在你處於 Server 設定嚮導中。如下為嚮導設定引數:

a. 伺服器的主機名:localhost

b. 伺服器型別:在 'JBoss Inc' 下,選擇 JBoss AS 4.0

c. 伺服器執行時:選擇之前設定的 'PCI Demo' runtime。

d. 選擇 next,將你的伺服器命名為一個你想用的唯一的名字。

e. 選擇 finish。

最後,我們將定製伺服器配置:

1. 在 JBoss Server 檢視中,你應該看見你的新伺服器,垂直排列的 2 個 panes。右擊底部的 pane 的伺服器的名字,選擇選單項 'Edit Launch Configuration'。

2. 在新對話方塊中,切換到 'Start Args' 標籤頁。在 VM 引數區域新增以下引數:-Xms512m -Xmx1028m

3. 在 Source 標籤頁上,點選 add 按鈕,選擇 pentaho 專案。這將自動將 pentaho 專案中的所有原始檔識別為這個伺服器配置的源。

4. 在 JRE 標籤頁中,指定 1.4 JRE,如果還沒有選中的話。

現在你應該在 JBoss Server 檢視的列表中看見新伺服器的名字。通過右擊 JBoss Server 檢視中的條目啟動和停止 pentaho 伺服器。注意!!! 在你啟動伺服器之前,為正確執行,首先你必須為 demo啟動資料庫。啟動資料庫的指令請參考hello world

JBoss IDE 1.x.x 中配置一個伺服器

這些命令對任何使用比推薦環境(Setting Up Your Environmentdoc 中所述)更老版本的 JBoss IDE 的人均有效。

為在 JBoss IDE 中配置一個新伺服器:

1. 切換到 Eclipse Debug 透檢視。

2. 從 Window 選單中,選擇 'Show View' 選項,然後選擇 'Other...' 選項。

3. 會出現一個具有指定檢視的提示對話方塊。選擇 'JBoss IDE' 選項,然後選擇 'Server Navigator' 檢視。

4. 選擇 OK 按鈕來結束。你應該看見 Server Navigator 檢視出現在 Eclipse Debug 透檢視的底部。右擊 Server Navigator window pane。選擇 'Configuration...' 選項。

5. 會出現一個提示配置對話方塊。在左邊的 pane 中,選擇 'JBoss 4.0.x' 選項,然後選擇左邊的 pane 中的 New 按鈕。你應該看到一個類似於此處的對話方塊。輸入 'pentaho-server' 作為你的新配置的名字。

6. 選擇 'Browse...' 按鈕,瀏覽至 pentaho-reconfiguredinstall 資料夾。將這個資料夾設定為 JBoss 4.0.x Home Directory。

7. 選擇 'default' 作為伺服器配置。

8. 選擇 'Apply' 按鈕儲存這個配置。

9. 切換到對話方塊中的 'Source' 標籤頁。

10. 選擇 'Add' 按鈕,然後從下一個對話方塊中選擇 'Java Project',然後從最後一個對話方塊中選擇'pentaho'。選擇 OK。

11. 選擇 'Apply' 按鈕儲存這個配置。

12. 選擇 'Close' 按鈕關閉對話方塊。現在你應該看見你的 Server Navigator 檢視中列出的 'pentaho-server'。通過右擊 Server Navigator 檢視中的 pentaho-server 條目,你可啟動和停止 pentaho-server。注意!在你啟動 pentaho-server 之前,首先你必須啟動資料庫,使得 demo 可正常執行。啟動資料庫的指令請參考下一節。

逐步除錯 'Hello World'

現在需要做的就是啟動平臺,設定斷點,觀察其執行情況!在你企圖從 Eclipse 中啟動 pentaho-server 之前,首先你必須啟動 demo 資料庫。

為啟動資料庫:

1. 通過命令列或使用你最喜歡的檔案瀏覽工具 – Eclipse 之外 – 瀏覽到 pentaho-data 資料夾。

2. 在 pentaho-data/demo-data 資料夾下,有 Windows OS 和 *nix 平臺上的啟動和關閉指令碼。執行適合於你的計算機的啟動指令碼(.bat 檔案用於 Windows,.sh 檔案用於 *nix)。

現在啟動 pentaho-server:

1. 從 Eclipse Debug 透檢視,Server Navigator 檢視中(或 JBoss Server View),右擊 pentaho-server 條目。

2. 選擇 'Debug' 選項。在 Console 檢視中滾動檢視,你會看到很多啟動訊息和警告。只要啟動時的最後一條訊息是 "Pentaho BI Platform server is ready.",你就知道平臺已經成功啟動和執行了。

現在讓我們設定一個斷點,並執行 'Hello World' demo solution,這樣你可看到執行中的開發過程。

1. 切換到 Eclipse Debug 透檢視,如果你還沒有開啟的話。

2. 從 Eclipse 的很多檔案瀏覽檢視之一(我使用 Navigator),在 pentaho 專案瀏覽至 server/pentaho/src/org/pentaho/core/runtime/RuntimeContextBase.java,開啟那個檔案。

3. 在 RuntimeContextBase.java 檔案的 1092 行設定一個斷點(從右鍵選單)(注意:因為程式碼的修改,這個行號很可能會發生變化,應該設定斷點的那行程式碼就是包含 executeComponent()的程式碼)。

4. 下一步,開啟一個 web 瀏覽器視窗,瀏覽至 http ://localhost: 8080/pentaho/ViewAction?&solution =samples&path=getting-started&action= HelloWorld.xaction.

5. 在元件執行結果從服務端發回瀏覽器之前,你在 Eclipse 中的斷點應該被 hit。從此處,你可在 Eclipse 中 step into,step over 或繼續執行。額外的除錯資訊請觀察Console 檢視。

相關文章