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/