Bonjour,
J'utilise Mondrian 3.3.0.14703 avec un Tomcat 6.0.33, et une JRE 1.6.0_29.
Ma base de donnée est PostGreSQL 9.1.1.
J'essaie de faire fonctionner les outils de test pour XML/A...
Malheureusement, sans grand succès...
Voici la configuration de mes fichiers:
/mondrian.properties
/WEB-INF/web.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4mondrian.foodmart.jdbcURL=jdbc:postgresql:5432//localhost/mydb2 mondrian.foodmart.jdbcUser=postgres mondrian.foodmart.jdbcPassword=myPassword mondrian.jdbcDrivers=org.postgresql.Driver
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156 <?xml version="1.0" encoding="UTF-8"?> <!-- $Id: //open/mondrian/webapp/WEB-INF/web-jpivot.xml#15 $ This software is subject to the terms of the Eclipse Public License v1.0 Agreement, available at the following URL: http://xmrrwallet.com/cmx.pwww.eclipse.org/legal/epl-v10.html. (C) Copyright 2003-2009 Julian Hyde and others All Rights Reserved. You must accept the terms of that agreement to use this software. --> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://xmrrwallet.com/cmx.pjava.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Mondrian</display-name> <description/> <!-- optional? now in JPivot by default --> <context-param> <param-name>contextFactory</param-name> <param-value>com.tonbeller.wcf.controller.RequestContextFactoryImpl</param-value> </context-param> <context-param> <param-name>connectString</param-name> <param-value>Provider=mondrian;Jdbc=jdbc:postgresql://localhost:5432/mydb2?user=postgres&password=myPassword;Catalog=/WEB-INF/queries/myDB4.xml;JdbcDrivers=org.postgresql.Driver;</param-value> </context-param> <!-- optional <context-param> <param-name>chartServlet</param-name> <param-value>/path/to/chartServlet</param-value> </context-param> --> <filter> <filter-name>JPivotController</filter-name> <filter-class>com.tonbeller.wcf.controller.RequestFilter</filter-class> <init-param> <param-name>errorJSP</param-name> <param-value>/error.jsp</param-value> <description>URI of error page</description> </init-param> <init-param> <param-name>busyJSP</param-name> <param-value>/busy.jsp</param-value> <description>This page is displayed if a the user clicks on a query before the previous query has finished</description> </init-param> <!-- <init-param> <param-name>forceExtension</param-name> <param-value>.faces</param-value> <description>replace .jsp with .faces</description> </init-param> --> </filter> <filter-mapping> <filter-name>JPivotController</filter-name> <url-pattern>/testpage.jsp</url-pattern> </filter-mapping> <listener> <listener-class>mondrian.web.taglib.Listener</listener-class> </listener> <!-- resources initializer --> <listener> <listener-class>com.tonbeller.tbutils.res.ResourcesFactoryContextListener</listener-class> </listener> <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:postgresql://localhost:5432/mydb2?user=postgres&password=myPassword;Catalog=/WEB-INF/queries/myDB4.xml;JdbcDrivers=org.postgresql.Driver;</param-value> </init-param> </servlet> <servlet> <servlet-name>MondrianXmlaServlet</servlet-name> <servlet-class>mondrian.xmla.impl.DefaultXmlaServlet</servlet-class> <init-param> <param-name>DataSourcesConfig</param-name> <param-value>/datasources.xml</param-value> </init-param> </servlet> <!-- jfreechart provided servlet --> <servlet> <servlet-name>DisplayChart</servlet-name> <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> </servlet> <!-- jfreechart provided servlet --> <servlet> <servlet-name>GetChart</servlet-name> <display-name>GetChart</display-name> <description>Default configuration created for servlet.</description> <servlet-class>com.tonbeller.jpivot.chart.GetChart</servlet-class> </servlet> <servlet> <servlet-name>Print</servlet-name> <display-name>Print</display-name> <description>Default configuration created for servlet.</description> <servlet-class>com.tonbeller.jpivot.print.PrintServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayChart</servlet-name> <url-pattern>/DisplayChart</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Print</servlet-name> <url-pattern>/Print</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>GetChart</servlet-name> <url-pattern>/GetChart</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>MDXQueryServlet</servlet-name> <url-pattern>/mdxquery</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>MondrianXmlaServlet</servlet-name> <url-pattern>/xmla</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <taglib> <taglib-uri>http://xmrrwallet.com/cmx.pwww.tonbeller.com/wcf</taglib-uri> <taglib-location>/WEB-INF/wcf/wcf-tags.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://xmrrwallet.com/cmx.pwww.tonbeller.com/jpivot</taglib-uri> <taglib-location>/WEB-INF/jpivot/jpivot-tags.tld</taglib-location> </taglib> </web-app>
/WEB-INF/datasources.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?xml version="1.0"?> <DataSources> <DataSource> <DataSourceName>Provider=Mondrian;DataSource=PG;</DataSourceName> <DataSourceDescription>Mondrian FoodMart Data Warehouse</DataSourceDescription> <URL>http://localhost:8080/mondrian/xmla</URL> <DataSourceInfo>Provider=mondrian;Jdbc=jdbc:postgresql://localhost:5432/mydb2;JdbcUser=postgres;JdbcPassword=myPassword;JdbcDrivers=org.postgresql.Driver;Catalog=/WEB-INF/queries/myDB4.xml</DataSourceInfo> <ProviderName>Mondrian</ProviderName> <ProviderType>MDP</ProviderType> <AuthenticationMode>Unauthenticated</AuthenticationMode> <Catalogs> <Catalog name="PG"> <Definition>/WEB-INF/queries/myDB4.xml</Definition> </Catalog> </Catalogs> </DataSource> </DataSources>
/WEB-INF/queries/mondrianXMLA.jsp
/WEB-INF/queries/xmla.jsp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <%@ page session="true" contentType="text/html; charset=ISO-8859-1" %> <%@ taglib uri="http://xmrrwallet.com/cmx.pwww.tonbeller.com/jpivot" prefix="jp" %> <%@ taglib prefix="c" uri="http://xmrrwallet.com/cmx.pjava.sun.com/jstl/core" %> <jp:xmlaQuery id="query01" uri="http://localhost:8080/jpivot/xmla" dataSource="Provider=Mondrian" catalog="PG"> select {[Indicator]} ON COLUMNS, {[Spatial]} ON ROWS from [Indicators] where [Temporal].[2006] </jp:xmlaQuery> <c:set var="title01" scope="session">Mondrian OLAP via XML/A - 2</c:set>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <!-- * Change uri attribute to your deployment of this webapp. * The dataSource attribute is necessary for Mondrian's XMLA. --> <jp:xmlaQuery id="query01" uri="http://localhost:8080/mondrian/xmla" dataSource="Provider=Mondrian;DataSource=PG;" catalog="PG"> select {[Indicator]} ON COLUMNS, {[Spatial]} ON ROWS from [Indicators] where [Temporal].[2006] </jp:xmlaQuery> <c:set var="title01" scope="session">Accessing Mondrian By XMLA - 1</c:set>
/WEB-INF/queries/myDB4.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 <?xml version="1.0"?> <!DOCTYPE Schema SYSTEM ".\mondrian.dtd"> <Schema name="simple_mydb"> <Dimension type="StandardDimension" name="Spatial"> <Hierarchy hasAll="true" primaryKey="spatial_level5_id" primaryKeyTable="spatial_level5"> <Join leftKey="spatial_level4_id" rightAlias="spatial_level4" rightKey="spatial_level4_id"> <Table name="spatial_level5" schema="public" /> <Join leftKey="spatial_level3_id" rightAlias="spatial_level3" rightKey="spatial_level3_id"> <Table name="spatial_level4" schema="public" /> <Table name="spatial_level3" schema="public" /> </Join> </Join> <Level name="NUTS2" table="spatial_level3" column="spatial_name" uniqueMembers="true"> </Level> <Level name="NUTS2_3" table="spatial_level4" column="spatial_name" uniqueMembers="true"> </Level> <Level name="NUTS3" table="spatial_level5" column="spatial_name" uniqueMembers="true"> </Level> <Parameter name="NUTS2" value="north_america_map.svg"/> <Parameter name="NUTS2_3" value="Map_USA_with_state.svg"/> <Parameter name="NUTS3" value="Map_USA_with_state.svg"/> </Hierarchy> </Dimension> <Dimension type="TimeDimension" name="Temporal"> <Hierarchy hasAll="false" primaryKey="temporal_id"> <Table name="temporal" schema="public" alias="temporal" /> <Level name="Year" column="temporal_year" type="Numeric" uniqueMembers="true" levelType="TimeYears" hideMemberIf="Never" /> <Level name="Month" column="temporal_month" type="Numeric" uniqueMembers="false" levelType="TimeMonths" hideMemberIf="Never" /> <Level name="Day" column="temporal_day" type="Numeric" uniqueMembers="false" levelType="TimeDays" hideMemberIf="Never" /> </Hierarchy> </Dimension> <Dimension type="StandardDimension" name="Indicator"> <Hierarchy hasAll="true" primaryKey="indicator_id"> <Table name="indicator" schema="public" alias="indicator" /> <Level name="Indicator Name" column="indicator_fullname" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never" /> </Hierarchy> </Dimension> <Dimension type="StandardDimension" name="Uom"> <Hierarchy hasAll="true" primaryKey="uom_id"> <Table name="uom" schema="public" /> <Level name="UOM Name" table="uom" column="uom_name" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never" /> </Hierarchy> </Dimension> <Cube name="Indicators" defaultMeasure="Measure" cache="true" enabled="true"> <Table name="fact" schema="public" /> <DimensionUsage name="Spatial" source="Spatial" foreignKey="spatial_level5_id"/> <DimensionUsage name="Temporal" source="Temporal" foreignKey="temporal_id"/> <DimensionUsage name="Uom" source="Uom" foreignKey="uom_id"/> <DimensionUsage name="Indicator" source="Indicator" foreignKey="indicator_id"/> <Measure name="Measure" column="fact_value" datatype="Numeric" formatString="#,#" aggregator="sum"/> </Cube> </Schema>
Phase de test :
Si je tente l'accès à l'URL
http://localhost:8080/mondrian/testpage.jsp?query=xmla
J'obtiens cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 JPivot had an error ... org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (404Introuvable org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (404Introuvable at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.tonbeller.wcf.controller.RequestFilter$MyHandler.normalRequest(RequestFilter.java:139) at com.tonbeller.wcf.controller.RequestFilter.doFilter(RequestFilter.java:264) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662) Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (404Introuvable at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:861) at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794) at org.apache.jsp.testpage_jsp._jspService(testpage_jsp.java:246) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) ... 19 more
Si j'utilise le lien "XML for Analysis tester", en sélectionnant "Discover DataSource", j'obtiens :
Avez-vous des idées pour faire fonctionner ce satané XMLA ?Etat HTTP 503 - La servlet MondrianXmlaServlet est actuellement indisponible
type Rapport d'état
message La servlet MondrianXmlaServlet est actuellement indisponible
description Le service demandé (La servlet MondrianXmlaServlet est actuellement indisponible) n'est pas disponible actuellement. Apache Tomcat/6.0.33
Merci d'avance
Michael
Partager