【问题标题】:Pentaho JNDI source name as parameter (Multi-Tennant)Pentaho JNDI 源名称作为参数(多租户)
【发布时间】:2015-12-28 21:48:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: pentaho


    【解决方案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,创建用户someone@xxx等

    6) 使用 JNDI 名称“MYDBSRC”创建报告

    7) 以某人@xxx 身份登录,您将获得与以用户身份或 user@aaa 身份登录不同的报告/数据源

    泰达!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多