12 March 2015 12:11
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"
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/