mondrian+jpivot源码导入eclipse并配置数据源

导入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>@mondrian.webapp.connectString@</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>@mondrian.webapp.connectString@</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 :)

****************************************************************************************

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。