Pentaho JNDI source name as parameter (Multi-Tennant) -


i have googled last half hour, , found hits pentaho parameters etc nothing appears ask or answer question.

i have set of reports same each customer, need connect different databases depending upon customer running report.

so idea pass jndi data source name report @ runtime parameter, customer connect correct database.

is possible, or there better way of managing common set of reports used different customers running on different databases in same single instance of pentaho engine ?

ok, have found better solution using little documented multi-tennant feature.

1) stop pentaho

2) modify ( pentaho-solutions/system/pentahoobjects.spring.xml )

<!-- original code  <bean id="idbdatasourceservice" class="org.pentaho.platform.engine.services.connection.datasource.dbcp.dynamicallypooledorjndidatasourceservice" scope="singleton">    <property name="pooleddatasourceservice" ref="pooledorjndidatasourceservice" />    <property name="nonpooleddatasourceservice" ref="nonpooledorjndidatasourceservice" />  </bean>  -->   <!--begin tenant -->    <bean id="idbdatasourceservice" class="org.pentaho.platform.engine.services.connection.datasource.dbcp.tenantaware.tenantawareloginparsingdatasourceservice"    scope="singleton">      <property name="requiretenantid" value="false" />      <property name="datasourcenameformat" value="{1}-{0}" />      <property name="tenantseparator" value="@" />      <property name="tenantonleft" value="false" />    </bean>  <!-- end tenant --> 

3) add suffix data sources ( biserver-ce/tomcat/webapps/pentaho/meta-inf/context.xml )

<resource   name="jdbc/mydbsrc-xxx"   auth="container"   type="javax.sql.datasource"   factory="org.apache.commons.dbcp.basicdatasourcefactory"   maxactive="20"   maxidle="5"   maxwait="10000"   username="xxxx"   password="xxxx"   driverclassname="net.sourceforge.jtds.jdbc.driver"   url="jdbc:jtds:sqlserver://192.168.42.0:1433;databasename=somedb" />  <resource   name="jdbc/mydbsrc-aaa"   auth="container"   type="javax.sql.datasource"   factory="org.apache.commons.dbcp.basicdatasourcefactory"   maxactive="20"   maxidle="5"   maxwait="10000"   username="xxxx"   password="xxxx"   driverclassname="net.sourceforge.jtds.jdbc.driver"   url="jdbc:jtds:sqlserver://192.168.42.0:1433;databasename=aotherdb" /> 

4) delete /tomcat/conf/catalina/localhost/pentaho.xml

5) restart pentaho, create user someone@xxx etc etc

6) create report using jndi name "mydbsrc"

7) login someone@xxx , different report / datasource either logging in user, or user@aaa

tadah !!


Comments

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -