#1 2015-03-17 14:05:44

chayden
Member
Registered: 2015-03-13

Error connecting to SQLSERVER2005 via Mondrian datasource

Hi,
I am trying to create a Saiku report using Mondrian as my datasource. When I access the report the error below pops up. The same basic error occur if I use "jTDS JDBC Driver" or "Microsoft SQL Server JDBC Driver 3.0". I have to problem accessing/opening the sample Saiku reports.
I have manually installed ReportSErver 2.2 on a machine with following spec;
OS: Windows 2003 server (32 bit)
Java runtime: 1.7.0_76
SQL JDBC jar file: sqljdbc4.jar and jtds-1.3.1.jar only


Mar 17, 2015 8:55:28 AM net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor invoke
INFO: Intercepted NonFatalException
net.datenwerke.gxtdto.client.servercommunication.exceptions.ServerCallFailedException: net.sourceforge.jtds.jdbc.JtdsConnection cannot be cast to org.olap4j.OlapConnection
    at net.datenwerke.rs.saiku.server.rest.SaikuRpcServiceImpl.loadCubesFor(SaikuRpcServiceImpl.java:139)
    at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:110)
    at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
    at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:110)
    at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:110)
    at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
    at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
    at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
    at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
    at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89)
    at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
    at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
    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:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: net.sourceforge.jtds.jdbc.JtdsConnection cannot be cast to org.olap4j.OlapConnection
    at net.datenwerke.rs.saiku.service.saiku.OlapUtilServiceImpl.getOlapConnection(OlapUtilServiceImpl.java:119)
    at net.datenwerke.rs.saiku.service.saiku.OlapUtilServiceImpl.getCubes(OlapUtilServiceImpl.java:57)
    at net.datenwerke.rs.saiku.server.rest.SaikuRpcServiceImpl.loadCubesFor(SaikuRpcServiceImpl.java:136)
    ... 37 more

Offline

#2 2015-03-17 15:53:59

Thorsten J. Krause
Guest

Re: Error connecting to SQLSERVER2005 via Mondrian datasource

Hi,

did you by chance mix up the driver and jdbcDriver property? As "driver" you always have to specify the MondrianOlap4jDriver, only the jdbcDriver property needs to be changed according to your database.

  driver=mondrian.olap4j.MondrianOlap4jDriver
  jdbcDrivers=com.microsoft.sqlserver.jdbc.SQLServerDriver

Cheers,
Thorsten

#3 2015-03-17 17:20:33

chayden
Member
Registered: 2015-03-13

Re: Error connecting to SQLSERVER2005 via Mondrian datasource

Yes I have. Below is the DataSource configurations I tried. Both test came back successful.  Note, I had to put the user and password in URL else I get a "login failed for user ''" error.
Using MS SQL Driver
URL: jdbc:sqlserver://jps-dwh.jps.net:1433;databaseName=FINANCE_DM;user=<username>;password=<password>

type=OLAP
name=OM
driver=mondrian.olap4j.MondrianOlap4jDriver
JdbcDrivers=com.microsoft.sqlserver.jdbc.SQLServerDriver



Using MS SQL Driver
URL: jdbc:jtds:sqlserver://jps-dwh.jps.net:1433;databaseName=FINANCE_DM;user=<username>;password=<password>

type=OLAP
name=OM
driver=mondrian.olap4j.MondrianOlap4jDriver
JdbcDrivers=net.sourceforge.jtds.jdbc.Driver

Both give the same error
net.datenwerke.gxtdto.client.servercommunication.exceptions.ServerCallFailedException: net.sourceforge.jtds.jdbc.JtdsConnection cannot be cast to org.olap4j.OlapConnection
<br>    at net.datenwerke.rs.saiku.server.rest.SaikuRpcServiceImpl.loadCubesFor(SaikuRpcServiceImpl.java:139) ...

OR

net.datenwerke.gxtdto.client.servercommunication.exceptions.ServerCallFailedException: com.microsoft.sqlserver.jdbc.SQLServerConnection cannot be cast to org.olap4j.OlapConnection
<br>    at net.datenwerke.rs.saiku.server.rest.SaikuRpcServiceImpl.loadCubesFor(SaikuRpcServiceImpl.java:139)

Last edited by chayden (2015-03-17 17:22:52)

Offline

#4 2015-03-17 17:32:02

Thorsten J. Krause
Guest

Re: Error connecting to SQLSERVER2005 via Mondrian datasource

Hi,

Your url is wrong. What happens here is that we access mondrian by using jdbc, so we define a connection to the mondrian server, using the MondrianOlap4jDriver. Mondrian then needs to connect to the actual database. For it to be able to do so, we pass the database connection properties as arguments to the mondrian-jdbc connection.

So we ave two drivers, mondrian und mssql, and also two jdbc urls one passed as an argument to the other:

jdbc:mondrian:Jdbc=jdbc:sqlserver://...

Notice the duplicate "jdbc" part: It's a jdbc connection to mondrian, that gets your sqlserver connection properties as an argument.

Cheers,
Thorsten

#5 2015-03-17 18:16:04

chayden
Member
Registered: 2015-03-13

Re: Error connecting to SQLSERVER2005 via Mondrian datasource

Thanks Thorsten,
You can go ahead and close this post. I really beginning to like your product. I will continue testing/evaluating. Thanks again.

Offline

Board footer

Powered by FluxBB