Pentaho JNDI源名称作为参数(Multi-Tennant)

时间:2015-09-30 23:57:45

标签: pentaho

我在过去的半小时里用谷歌搜索了这个,并发现了pentaho参数的点击等,但似乎没有任何问题或回答这个问题。

我有一组对每个客户都相同的报告,但需要根据运行报告的客户连接到不同的数据库。

所以我的想法是在运行时将JNDI数据源名称作为参数传递给报表,以便客户连接到正确的数据库。

这是可能的,还是有更好的方法来管理在不同数据库上运行但在同一个pentaho引擎实例中的不同客户使用的一组通用报告?

1 个答案:

答案 0 :(得分:1)

好的,我已经找到了一个更好的解决方案,使用了很少记录的多租户功能。

1)停止Pentaho

2)修改(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)向数据源添加后缀(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)删除/tomcat/conf/Catalina/localhost/pentaho.xml

5)重启Pentaho,创建用户@ xxx等等

6)使用JNDI名称“MYDBSRC”

创建报告

7)以@ xxx登录,您将获得与以用户登录或用户@aaa

不同的报告/数据源

Tadah !!