I have set up Mondrian on JBoss and it works fine when running an MDX statement via the Olap4J API. But when I set up Mondrian as XML/A server, I get the exception below (in the server console) when trying to connect with Warehouse Explorer (aka Rex) with the URL http://localhost:8080/olap/xmla
.
The error in Rex is:
This is my datasources.xml
<DataSource>
<DataSourceName>Mondrian</DataSourceName>
<DataSourceDescription>Mondrian XMLA</DataSourceDescription>
<URL>http://localhost:8080/olap/xmla</URL>
<DataSourceInfo>Provider=mondrian;Jdbc=jdbc:mysql://localhost:3306/foodmart;JdbcUser=uuuuu;JdbcPassword=pppp;JdbcDrivers=com.mysql.jdbc.Driver;</DataSourceInfo>
<ProviderName>Mondrian</ProviderName>
<ProviderType>MDP</ProviderType>
<AuthenticationMode>Unauthenticated</AuthenticationMode>
<Catalogs>
<Catalog name="FoodMart">
<Definition>/WEB-INF/FoodMart.xml</Definition>
</Catalog>
</Catalogs>
</DataSource>
And this is the exception:
mondrian.olap.MondrianException: Mondrian Error:Connect string must contain property 'Catalog' or property 'CatalogContent' at mondrian.resource.MondrianResource$_Def1.ex(MondrianResource.java:994) [mondrian-3.9.0.0-213.jar:] at mondrian.rolap.RolapSchemaPool.getSchemaContent(RolapSchemaPool.java:268) [mondrian-3.9.0.0-213.jar:] at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:135) [mondrian-3.9.0.0-213.jar:] at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:67) [mondrian-3.9.0.0-213.jar:] at mondrian.rolap.RolapConnection.(RolapConnection.java:161) [mondrian-3.9.0.0-213.jar:] at mondrian.rolap.RolapConnection.(RolapConnection.java:91) [mondrian-3.9.0.0-213.jar:] at mondrian.olap.DriverManager.getConnection(DriverManager.java:113) [mondrian-3.9.0.0-213.jar:3.9.0.0-213] at mondrian.olap.DriverManager.getConnection(DriverManager.java:69) [mondrian-3.9.0.0-213.jar:3.9.0.0-213] at mondrian.olap4j.MondrianOlap4jConnection.(MondrianOlap4jConnection.java:162) [mondrian-3.9.0.0-213.jar:] at mondrian.olap4j.FactoryJdbc4Plus$AbstractConnection.(FactoryJdbc4Plus.java:323) [mondrian-3.9.0.0-213.jar:] at mondrian.olap4j.FactoryJdbc41Impl$MondrianOlap4jConnectionJdbc41.(FactoryJdbc41Impl.java:118) [mondrian-3.9.0.0-213.jar:] at mondrian.olap4j.FactoryJdbc41Impl.newConnection(FactoryJdbc41Impl.java:32) [mondrian-3.9.0.0-213.jar:] at mondrian.olap4j.MondrianOlap4jDriver.connect(MondrianOlap4jDriver.java:134) [mondrian-3.9.0.0-213.jar:] at java.sql.DriverManager.getConnection(DriverManager.java:571) [rt.jar:1.7.0_71] at java.sql.DriverManager.getConnection(DriverManager.java:187) [rt.jar:1.7.0_71] at mondrian.server.FileRepository.getConnection(FileRepository.java:178) [mondrian-3.9.0.0-213.jar:3.9.0.0-213] at mondrian.server.FileRepository.getConnection(FileRepository.java:129) [mondrian-3.9.0.0-213.jar:3.9.0.0-213] at mondrian.server.MondrianServerImpl.getConnection(MondrianServerImpl.java:264) [mondrian-3.9.0.0-213.jar:3.9.0.0-213] at mondrian.xmla.XmlaHandler.getConnection(XmlaHandler.java:2945) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.XmlaHandler.getConnection(XmlaHandler.java:177) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.Rowset.populate(Rowset.java:219) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.Rowset.unparse(Rowset.java:194) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.XmlaHandler.discover(XmlaHandler.java:2867) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.XmlaHandler.process(XmlaHandler.java:671) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.impl.DefaultXmlaServlet.handleSoapBody(DefaultXmlaServlet.java:507) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.XmlaServlet.doPost(XmlaServlet.java:318) [mondrian-3.9.0.0-213.jar:] at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_71]
11:34:33,441 ERROR [mondrian.xmla.XmlaServlet] (http-localhost-127.0.0.1-8080-1) Errors when handling XML/A message: mondrian.xmla.XmlaException: Mondrian Error:XMLA Discover unparse results error at mondrian.xmla.XmlaHandler.discover(XmlaHandler.java:2873) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.XmlaHandler.process(XmlaHandler.java:671) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.impl.DefaultXmlaServlet.handleSoapBody(DefaultXmlaServlet.java:507) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.XmlaServlet.doPost(XmlaServlet.java:318) [mondrian-3.9.0.0-213.jar:] at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_71] Caused by: mondrian.olap.MondrianException: Mondrian Error:Internal error: No suitable connection found at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:974) [mondrian-3.9.0.0-213.jar:] at mondrian.olap.Util.newInternal(Util.java:2397) [mondrian-3.9.0.0-213.jar:3.9.0.0-213] at mondrian.olap.Util.newError(Util.java:2412) [mondrian-3.9.0.0-213.jar:3.9.0.0-213] at mondrian.server.FileRepository.getConnection(FileRepository.java:143) [mondrian-3.9.0.0-213.jar:3.9.0.0-213] at mondrian.server.MondrianServerImpl.getConnection(MondrianServerImpl.java:264) [mondrian-3.9.0.0-213.jar:3.9.0.0-213] at mondrian.xmla.XmlaHandler.getConnection(XmlaHandler.java:2945) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.XmlaHandler.getConnection(XmlaHandler.java:177) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.Rowset.populate(Rowset.java:219) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.Rowset.unparse(Rowset.java:194) [mondrian-3.9.0.0-213.jar:] at mondrian.xmla.XmlaHandler.discover(XmlaHandler.java:2867) [mondrian-3.9.0.0-213.jar:] ... 19 more
This is how I fixed this problem: you have to add Catalog to DataSourceInfo (in addition to the Catalog
element):
Provider=mondrian;Jdbc=jdbc:mysql://localhost:3306/foodmart;JdbcUser=uuuuu;JdbcPassword=ppppp;JdbcDrivers=com.mysql.jdbc.Driver;Catalog=/WEB-INF/FoodMart.xml