You are not logged in.
Pages: 1
Topic closed
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
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
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
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
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
Pages: 1
Topic closed