Настройка XML/A Mondrian 3.4.1 и MySQL под Windows

1. Скачиваем mondrian-3.4.1.zip, разархивируем и берем из папки lib файл mondrian.war и помещаем его в папку webapps Tomcata. Запускаем Tomcat, ждем. Tomcat создаст папку mondrian, в которой и находится приложение.

2. Подключаем драйвер базы данных MySQL. Скачиваем от сюда: http://dev.mysql.com/downloads/connector/j/ и помещаем в папку webapps/mondrian/WEB-INF/lib.

3. Создать базу данных. Мы воспользуемся тестовой базой данных foodmart, для этого ее надо распаковать. Запускаем cmd и заходим в папку webapps/mondrian/WEB-INF/lib и выполняем следующую команду:

java -cp "mondrian.jar;log4j-1.2.8.jar;commons-logging-1.0.4.jar;eigenbase-xom.jar;eigenbase-resgen.jar;eigenbase-properties.jar;olap4j.jar;mysql-connector-java-5.1.31-bin.jar;commons-collections-3.1.jar" 
mondrian.test.loader.MondrianFoodMartLoader
-verbose -tables -data -indexes 
-jdbcDrivers=com.mysql.jdbc.Driver 
-inputFile=C:/mondrian/demo/FoodMartCreateData.sql
-outputJdbcURL="jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart"
  • outputJdbsURL надо изменить под Вашу базу данных и имя пользователя,
  • inputFile sql файл с тестовой базой данных, который расположен в папке demo распакованного архива mondrian-3.4.1.zip.

4. Меняем конфиги:

4.a. web.xml

Меняем connectstring параметр:

  <context-param>
    <param-name>connectString</param-name>
    <param-value>Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=com.mysql.jdbc.Driver;</param-value>
  </context-param>

Комментируем DataSourceConfig:

  <servlet>
    <servlet-name>MondrianXmlaServlet</servlet-name>
    <servlet-class>mondrian.xmla.impl.DynamicDatasourceXmlaServlet</servlet-class>
    <init-param>
      <param-name>CharacterEncoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <!--
    <init-param>
      <param-name>DataSourcesConfig</param-name>
      <param-value>/WEB-INF/datasources.xml</param-value>
    </init-param>
      This is an example of how to add a callback to the XML/A servlet.
      It must implement mondrian.xmla.XmlaRequestCallback.
    <init-param>
      <param-name>Callbacks</param-name>
      <param-value>com.example.MyCallbackClass;com.example.SomeOtherCallback</param-value>
    </init-param>
    -->
  </servlet>

Меняем MDXQueryServlet:

  <servlet>
    <servlet-name>MDXQueryServlet</servlet-name>
    <servlet-class>mondrian.web.servlet.MdxQueryServlet</servlet-class>
    <init-param>
      <param-name>connectString</param-name>
      <param-value>Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=com.mysql.jdbc.Driver;</param-value>
    </init-param>
  </servlet>

Строки подключения к базе данных mysql://localhost/foodmart?user=foodmart&password=foodmart меняем в соответствии вашими данными.

Внимание: За символом & необходимо добавить # 3 8 ; - слитно.

4.b. datasource.xml

<?xml version="1.0"?>
<DataSources>
    <DataSource>
     <DataSourceName>Provider=Mondrian;DataSource=MySQL</DataSourceName>
     <DataSourceDescription>Test Data Warehouse On MySQL</DataSourceDescription>
     <URL>http://localhost:8080/mondrian/xmla</URL>
     <DataSourceInfo>Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart;JdbcUser=foodmart;JdbcPassword=foodmart;JdbcDrivers=com.mysql.jdbc.Driver</DataSourceInfo>
     <ProviderName>Mondrian</ProviderName>
     <ProviderType>MDP</ProviderType>
     <AuthenticationMode>Unauthenticated</AuthenticationMode>
     <Catalogs>
         <Catalog name="FoodMart">
             <Definition>/WEB-INF/queries/FoodMart.xml</Definition>
         </Catalog> 
     </Catalogs>
   </DataSource>
</DataSources>

DataSourceInfo - Jdbc, JdbcUser, JdbcPassword меняем в соответствии с Вашими данными.

5. Меняем jp:xmlaQuery в webapps/mondrian/WEB-INF/queries/xmla.jsp.

<jp:xmlaQuery id="query01" uri="http://localhost:8080/mondrian/xmla" dataSource="Provider=Mondrian;DataSource=MySQL" catalog="FoodMart">

6. Тестируем. Заходим по адресу http://localhost:8080/mondrian/xmlaTest.jsp. Выбираем запрос dbschemaCatalogs и меняем DataSourceInfo так чтобы он совпадал с DataSourceName из datasouce.xml. Пример:

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
  <RequestType>DBSCHEMA_CATALOGS</RequestType>
  <Restrictions>
    <RestrictionList/>
  </Restrictions>
  <Properties>
    <PropertyList>
      <DataSourceInfo>Provider=Mondrian;DataSource=MySQL</DataSourceInfo>
      <Catalog>FoodMart</Catalog>
      <Format>Tabular</Format>
    </PropertyList>
  </Properties>
</Discover>

Вот и все, можем пользоваться сервисом XML/A Mondrian.

Дополнительная информация

Если появилась ошибка NoClassDefFoundError log4j: http://forums.pentaho.com/showthread.php?52240-Mo...

Возможно понадобиться обновить xalan: http://archive.apache.org/dist/xml/xalan-j/binaries/

mondrian
comments powered by Disqus