標籤:
匯入mondrian源碼步驟如下:
1 ) 下載mondrian-3.0.0.10550 和 jpivot 1.8.0 , mondrian-3.0.0以後的版本 和 jpivot的源碼整合不到一起. jpivot好久沒更新了!!!! :http://mondrian.pentaho.com/
2 ) 在eclipse裡建立個web工程, 命名mondrian.
3 ) 解壓mondrian-3.0.0.10550/mondrian-3.0.0.10550-src.zip , 將解壓的內容覆蓋你的工程
4 ) 在ant視圖下運行build.xml檔案的prepare,parser,generate.resources,def四個目標過程(MondrianGuiDef類是通過builder產生的!! 如果builder過程中出現*********找不到subfloor.xml****的錯誤的話 你需要http://code.google.com/p/subfloor/wiki/SubflloorHowTo下載一個subfloor.xml檔案放到bulid.xml同級目錄下)
5 ) 將mondrian-3.0.0.10550/lib/mondrian.war發布包中的WEB-INF/lib中的jar包全部拷貝到Mondrian工程的lib目錄中;
6) 根據編譯的錯誤匯入必要的jar包.
注意:1、最後執行ant完成對工程進行清理處理;
2、如果一切正常,之後則不需要用mondrian.jar檔案,可以依此為標準檢測是否構建成功。
匯入jpivot源碼步驟如下:
直接在你的mondrian工程下建立src/jpivot, 然後將jpivot-1.8.0/src/java的東東考進去就行了, 這個就不細說了
匯入成功後就可以把jpivot.jar刪掉了
配置資料來源:
一. 使用odbj的方式:
控制台 -> 管理工具 -> 資料來源 (ODBC) -> 點擊添加 -> 選擇driver do microsoft access(*.mdb) -> 下一步 設定資料來源名MondrianFoodMart -> 資料庫選擇(mondrian-3.0.0.10550/demo/access/MondrianFoodMart.mdb)
二. 其它資料庫:
在你的mondrian/web-inf目錄下執行以下命令(斜體字部分需要自己調整下)
java -cp "lib/mondrian.jar;lib/log4j-1.2.8.jar;lib/eigenbase-resgen.jar;lib/commons-logging-1.0.4.jar;lib/eigenbase-xom.jar;lib/eigenbase-properties.jar;lib/mysql.jar" mondrian.test.loader.MondrianFoodMartLoader -verbose -tables -data -indexes -jdbcDrivers=com.mysql.jdbc.Driver -inputFile=lib/FoodMartCreateData.sql -outputJdbcURL="jdbc:mysql://localhost:3306/foodmart?user=root&password=admin"
測試下:
1 ) 在你的mondrian工程下,建立一個包含main函數測試類別,建立一個connection:
Connection conn=DriverManager.getConnection(String,BOOl);
測試的String的內容為:
Access:
“Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=file:///D:/workspace /mondrian工程/webapp/WEB-INF/queries /FoodMart.xml;JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver; “
在String中定義了資料庫連接的參數,以及Schema檔案的路徑(CataLog)。
注意:
1 Provider=mondrian這一句是必須的,mondrian產生connection的時候對provider的值進行了單獨的檢查,沒有這一句或者provider為其他值,都會觸發異常;
2 第二個參數定義CataLog,若在String中已經定義,值為null(記住要把FoodMart.xml拷貝到D:/workspace /mondrian工程/webapp/WEB-INF/queries目錄下);
3 Mondrian2.x和Mondrian3.x有較大改動,對於getConnection()函數而言,mondrian3.x只有兩個參數,2.x 則有三個參數。
2 ) 定義查詢語句:
String queryStr =”select {[Measures].[Unit Sales]} on columns “+
“from Sales”
注意:查詢語句必須遵守mdx文法;
3 ) 利用connection產生一個Query對象:
Query query = conn.paseQuery(queryStr);
4 ) 執行查詢得到結果:
Result result = conn.execute(query);
5 ) 控制台列印結果:
PrintWriter pw = new PrintWriter(System.out);
result.print(pw);
pw.flush();
如果以上測試通過說明mondrian以及資料來源配置成功了, 下面配置下jpivot 讓web工程能跑起來:
1) 開啟mondrian/WebRoot/WEB-INF/queries下的mondrian.jsp, 設定下資料來源什麼的, 看看 你懂的...
2) 將工程發布到tomcat -> 運行 -> http://localhost:8080/mondrian, 頁面有幾個demo, 其中有幾個連結會報錯,這個是官方的demo有問題,需要我們手動修改下,修改方法如下(修改方法粘貼的網上的):
**************************************************************************************
1》 (error) * Various queries formatted using the Mondrian tag-library
在web.xml中找到一下內容
<context-param>
<param-name>connectString</param-name>
<param-value>@[email protected]</param-value>
</context-param>
把connectstring修改成如下即可(access連擊使用預設odbc)
<context-param>
<param-name>connectString</param-name>
<!-- The Test Of "Various queries formatted using the Mondrian tag-library" -->
<param-value>Provider=mondrian;Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver;</param-value>
</context-param>
2》(error) * Basic interface for ad hoc queries
在web.xml中找到一下內容
<servlet>
<servlet-name>MDXQueryServlet</servlet-name>
<servlet-class>mondrian.web.servlet.MDXQueryServlet</servlet-class>
<init-param>
<param-name>connectString</param-name>
<param-value>@[email protected]</param-value>
</init-param>
</servlet>
把connectstring修改成如下即可(access連擊使用預設odbc)
<servlet>
<servlet-name>MDXQueryServlet</servlet-name>
<servlet-class>mondrian.web.servlet.MDXQueryServlet</servlet-class>
<init-param>
<param-name>connectString</param-name>
<!--The Test Of "Basic interface for ad hoc queries"-->
<param-value>Provider=mondrian;Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver;</param-value>
</init-param>
</servlet>
3》(error) * JPivot pivot table by XMLA
4》(error) * XML for Analysis tester
上面這兩個可以一起來解決,找到/WEB-INF/datasources.xml,這裡定義了一個DataSource,我們可以再建立一個DataSource
<DataSource>
<DataSourceName>Provider=Mondrian;DataSource=AccessTest;</DataSourceName>
<DataSourceDescription>Mondrian FoodMart Data Warehouse</DataSourceDescription>
<URL>http://localhost:8888/mondrian/xmla</URL> <DataSourceInfo>Provider=mondrian;Local=zh_CN;DynamicSchemaProcessor=mondrian.i18n.LocalizingDynamicSchemaProcessor;Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver;</DataSourceInfo>
<ProviderName>Mondrian</ProviderName>
<ProviderType>MDP</ProviderType>
<AuthenticationMode>Unauthenticated</AuthenticationMode>
<Catalogs>
<Catalog name="FoodMart">
<Definition>/WEB-INF/queries/FoodMart.xml</Definition>
</Catalog>
</Catalogs>
</DataSource>
我們定義了一個叫“AccessTest”的Datasource。接下來開啟/WEB-INF/queries/xmla.jsp,將替dataSource="Provider=Mondrian;DataSource=MondrianFoodMart;"換成dataSource="Provider=Mondrian;DataSource=AccessTest;"即可,因為預設的MondrianFoodMart資料來源是關聯到oracle資料庫的,而我們偷來用了Access :)
****************************************************************************************
【轉】mondrian+jpivot源碼匯入eclipse並配置資料來源