mercredi 4 mars 2015

Exception getting olap4j conection in pentaho 5.2

I have two Pentaho plugins. One made in GWT work in 5.0-5.2 and return all dimensions I need. Now I need refactoring without gwt. I put conection code in my new REST service and code work well in pentaho 5.0 but fail in 5.2. I believe the problem is not in the code but i trying to understand why it fail if in the gwt service work well.



MondrianProperties pr = MondrianProperties.instance();

// Customize Mondrian to get connection
pr.setProperty("mondrian.rolap.ignoreInvalidMembers", "true");
pr.setProperty("mondrian.rolap.ignoreInvalidMembersDuringQuery", "true");
pr.DataSourceResolverClass.setString("org.pentaho.platform.web.servlet.PentahoDataSourceResolver");

Properties props = MondrianPropertyLoader.loadProperties();
for(String property: props.stringPropertyNames()) {
pr.setProperty(property, props.getProperty(property));
}

url = "jdbc:mondrian:Catalog=" + catalogDefinition + ";Datasource=" + dataSource; // + props;
Class.forName("mondrian.olap4j.MondrianOlap4jDriver");

// In Pentaho 5.2 RESTService fail
// ---------------------------------
OlapConnection connection = (OlapConnection) DriverManager.getConnection(url, "", "");
// ---------------------------------

final OlapWrapper wrapper = connection;
OlapConnection tmpolapConnectionStx = (OlapConnection) wrapper.unwrap(OlapConnection.class);
olapConnection = tmpolapConnectionStx;

//Roles stuff
setRoles(connection.getAvailableRoleNames());

connection = null;
Class.forName("mondrian.olap4j.MondrianOlap4jDriver");

url += ";Role=" + getStringRoles();
connection = (OlapConnection) DriverManager.getConnection(url, "", "");
final OlapWrapper wrapper2 = connection;
tmpolapConnectionStx = null;
tmpolapConnectionStx = (OlapConnection) wrapper2.unwrap(OlapConnection.class);
if (tmpolapConnectionStx == null) {
throw new Exception("Connection is null");
}
olapConnection = tmpolapConnectionStx;
this.initialized = true;


Previous code is the same for both, but in my new service in Pentaho 5.2 the line


OlapConnection connection = (OlapConnection) DriverManager.getConnection ...


fail and throw following exceptions with this urls


jdbc:mondrian:Catalog=mondrian:/SampleData;Datasource=SampleData;Provider:mondrian;EnableXmla:false


jdbc:mondrian:Catalog=mondrian:/SampleData;Datasource=SampleData



ERROR [PentahoDataSourceResolver] PentahoXmlaServlet.ERROR_0002 - IDatasourceService.UNABLE_TO_INSTANTIATE_OBJECT
org.pentaho.platform.api.data.DBDatasourceServiceException: DatasourceService.ERROR_0003 - Unable to get jndi datasource
at org.pentaho.platform.engine.services.connection.datasource.dbcp.NonPooledOrJndiDatasourceService.retrieve(NonPooledOrJndiDatasourceService.java:69)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.BaseDatasourceService.getDataSource(BaseDatasourceService.java:69)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.DynamicallyPooledOrJndiDatasourceService.resolveDatabaseConnection(DynamicallyPooledOrJndiDatasourceService.java:37)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.NonPooledOrJndiDatasourceService.retrieve(NonPooledOrJndiDatasourceService.java:51)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.BaseDatasourceService.getDataSource(BaseDatasourceService.java:69)
at org.pentaho.platform.web.servlet.PentahoDataSourceResolver.lookup(PentahoDataSourceResolver.java:43)
at mondrian.rolap.RolapConnection.createDataSource(RolapConnection.java:429)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:135)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:91)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:113)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:69)
at mondrian.olap4j.MondrianOlap4jConnection.<init>(MondrianOlap4jConnection.java:157)
at mondrian.olap4j.FactoryJdbc4Plus$AbstractConnection.<init>(FactoryJdbc4Plus.java:323)
at mondrian.olap4j.FactoryJdbc41Impl$MondrianOlap4jConnectionJdbc41.<init>(FactoryJdbc41Impl.java:118)
at mondrian.olap4j.FactoryJdbc41Impl.newConnection(FactoryJdbc41Impl.java:32)
at mondrian.olap4j.MondrianOlap4jDriver.connect(MondrianOlap4jDriver.java:134)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.stratebi.stx.board.provider.StxBoardConnection.connect(StxBoardConnection.java:101)
at com.stratebi.stx.board.provider.StxBoardConnection.isConnected(StxBoardConnection.java:55)
at com.stratebi.stx.board.api.rest.OlapResources.getCubeDimensions(OlapResources.java:98)
at com.stratebi.stx.board.api.rest.OlapResources$$FastClassByCGLIB$$767f2eeb.invoke(<generated>)
. . .
Caused by: org.pentaho.platform.api.data.DBDatasourceServiceException: javax.naming.NameNotFoundException: El nombre SampleData no este asociado a este contexto
at org.pentaho.platform.engine.services.connection.datasource.dbcp.PooledDatasourceHelper.getJndiDataSource(PooledDatasourceHelper.java:378)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.BaseDatasourceService.getJndiDataSource(BaseDatasourceService.java:99)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.NonPooledOrJndiDatasourceService.retrieve(NonPooledOrJndiDatasourceService.java:67)
... 108 more
Caused by: javax.naming.NameNotFoundException: El nombre SampleData no este asociado a este contexto
at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.PooledDatasourceHelper.getJndiDataSource(PooledDatasourceHelper.java:339)
... 110 more
mondrian.olap.MondrianException: Mondrian Error:Internal error: Error while looking up data source (SampleData)
at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:977)
at mondrian.olap.Util.newInternal(Util.java:2404)
at mondrian.rolap.RolapConnection.createDataSource(RolapConnection.java:431)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:135)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:91)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:113)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:69)
at mondrian.olap4j.MondrianOlap4jConnection.<init>(MondrianOlap4jConnection.java:157)
at mondrian.olap4j.FactoryJdbc4Plus$AbstractConnection.<init>(FactoryJdbc4Plus.java:323)
at mondrian.olap4j.FactoryJdbc41Impl$MondrianOlap4jConnectionJdbc41.<init>(FactoryJdbc41Impl.java:118)
at mondrian.olap4j.FactoryJdbc41Impl.newConnection(FactoryJdbc41Impl.java:32)
at mondrian.olap4j.MondrianOlap4jDriver.connect(MondrianOlap4jDriver.java:134)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.stratebi.stx.board.provider.StxBoardConnection.connect(StxBoardConnection.java:101)
at com.stratebi.stx.board.provider.StxBoardConnection.isConnected(StxBoardConnection.java:55)
at com.stratebi.stx.board.api.rest.OlapResources.getCubeDimensions(OlapResources.java:98)
at com.stratebi.stx.board.api.rest.OlapResources$$FastClassByCGLIB$$767f2eeb.invoke(<generated>)
. . .
Caused by: org.pentaho.platform.api.data.DBDatasourceServiceException: DatasourceService.ERROR_0003 - Unable to get jndi datasource
at org.pentaho.platform.engine.services.connection.datasource.dbcp.NonPooledOrJndiDatasourceService.retrieve(NonPooledOrJndiDatasourceService.java:69)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.BaseDatasourceService.getDataSource(BaseDatasourceService.java:69)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.DynamicallyPooledOrJndiDatasourceService.resolveDatabaseConnection(DynamicallyPooledOrJndiDatasourceService.java:37)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.NonPooledOrJndiDatasourceService.retrieve(NonPooledOrJndiDatasourceService.java:51)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.BaseDatasourceService.getDataSource(BaseDatasourceService.java:69)
at org.pentaho.platform.web.servlet.PentahoDataSourceResolver.lookup(PentahoDataSourceResolver.java:43)
at mondrian.rolap.RolapConnection.createDataSource(RolapConnection.java:429)
... 102 more
Caused by: org.pentaho.platform.api.data.DBDatasourceServiceException: javax.naming.NameNotFoundException: El nombre SampleData no este asociado a este contexto
at org.pentaho.platform.engine.services.connection.datasource.dbcp.PooledDatasourceHelper.getJndiDataSource(PooledDatasourceHelper.java:378)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.BaseDatasourceService.getJndiDataSource(BaseDatasourceService.java:99)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.NonPooledOrJndiDatasourceService.retrieve(NonPooledOrJndiDatasourceService.java:67)
... 108 more
Caused by: javax.naming.NameNotFoundException: El nombre SampleData no este asociado a este contexto
at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at org.pentaho.platform.engine.services.connection.datasource.dbcp.PooledDatasourceHelper.getJndiDataSource(PooledDatasourceHelper.java:339)
... 110 more


Both plugins are the same pentaho and has the same mondrian properties, so i don't understand why its happen.


Aucun commentaire:

Enregistrer un commentaire