Mdx Pentaho-Mondrian OLAP模式角色

Mdx Pentaho-Mondrian OLAP模式角色,mdx,pentaho,mondrian,xmla,Mdx,Pentaho,Mondrian,Xmla,我已经启动并运行了一个Mondrian服务器webapp来处理MDX查询,从Mondrian模式中定义的OLAP多维数据集获取数据,并返回前端GUI应用程序显示查询数据所需的XMLA 这一切都是可行的,但现在我正试图添加权限角色,我偶然发现了一个非常令人困惑的问题 现在我认为这将是一样容易添加另一个参数“角色”,并发送。然而,这给我带来了一个奇怪的错误 我正在使用SmartGWT连接到Mondrian XMLA服务 public static OlapConnection getConn

我已经启动并运行了一个Mondrian服务器webapp来处理MDX查询,从Mondrian模式中定义的OLAP多维数据集获取数据,并返回前端GUI应用程序显示查询数据所需的XMLA

这一切都是可行的,但现在我正试图添加权限角色,我偶然发现了一个非常令人困惑的问题

现在我认为这将是一样容易添加另一个参数“角色”,并发送。然而,这给我带来了一个奇怪的错误

我正在使用SmartGWT连接到Mondrian XMLA服务

    public static OlapConnection getConnection() throws Exception {
    Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");
    java.util.Properties p = new Properties();
    String role = "role1";
    p.put("server", "http://domain.be:8080/mondrian/xmla");
    p.put("user", "user");
    p.put("password", "password");
    p.put("role","\""+role+"\"");
    String dbUrl = "jdbc:xmla:";
    Connection connectionXMLA = DriverManager.getConnection(dbUrl, p);
    OlapWrapper wrapper = (OlapWrapper) connectionXMLA;
    OlapConnection olapConnection = wrapper.unwrap(OlapConnection.class);
    return olapConnection;
角色在也包含多维数据集的架构中定义,如下所示:

<Role name="role1">
<SchemaGrant access="none">
      <CubeGrant cube="VehicleSales" access="all"/>
  <CubeGrant cube="Contract" access="none"/>
</SchemaGrant>
请求是: 发现属性 “角色1” 资料 未定义-响应:{operationId: “listCubes_fetch”,clientContext:Obj,context:Obj, transactionNum:0,httpResponseCode:200,httpResponseText: “//isc_RPCResponseStart-->[{”数据“:“org.o.”[1497], xmlHttpRequest:Obj,传输:“xmlHttpRequest”,状态: -1,clientOnly:unde,httpHeaders:Obj,isStructured:true,callbackArgs:null,结果:Obj,数据: “org.olap4j.OlapException:XMLA提供程序…”[1243], invalidateCache:false,isDSResponse:true,队列状态:-1,startRow: 0,endRow:0,totalRows:0} com.smartgwt.client.core.JsObject$SGWT\u警告: 12:30:50.928:TMR9:WARN:RPCManager:org.olap4j.OlapException:XMLA 提供商给出了例外: SOAP-ENV:Server.00HSBB01 XMLA SOAP正文处理错误 蒙德里安

00HSBB01
Mondrian XML:Mondrian错误:内部错误:行集“DISCOVER_PROPERTIES”不支持属性“Roles”
请求是: 发现属性 “角色1” 资料 未定义-响应:{operationId: “listCubes_fetch”,clientContext:Obj,context:Obj, transactionNum:0,httpResponseCode:200,httpResponseText: “//isc_RPCResponseStart-->[{”数据“:“org.o.”[1497], xmlHttpRequest:Obj,传输:“xmlHttpRequest”,状态: -1,clientOnly:unde,httpHeaders:Obj,isStructured:true,callbackArgs:null,结果:Obj,数据: “org.olap4j.OlapException:XMLA提供程序…”[1243], invalidateCache:false,isDSResponse:true,队列状态:-1,startRow: 0,endRow:0,totalRows:0} 位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源) 位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源) 位于java.lang.reflect.Constructor.newInstance(未知源) 位于com.google.gwt.dev.shell.MethodAdapter.invoke(methodAdapter.java:105) 位于com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 位于com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) 位于com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293) 位于com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547) 在com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364) 位于java.lang.Thread.run(未知源)

其他随机参数,如“foo”或“bar”,不会返回任何错误,只是被忽略。所以“role”肯定会触发一些东西,但遗憾的是,我无法处理任何东西

谁能提供一些见解?非常感谢。 我发现Pentaho XmlaHandler接受角色作为参数,但这似乎是Mondrian内部使用的东西,不一定是我可以立即在SmartGWT中使用的东西-我想

谢谢你的阅读

编辑 下面的代码段返回错误:

java.lang.RuntimeException:org.olap4j.olapeException:获取数据库产品名称失败

        Connection connectionXMLA = DriverManager.getConnection(dbUrl, p);
    OlapWrapper wrapper = (OlapWrapper) connectionXMLA;
    OlapConnection olapConnection = wrapper.unwrap(OlapConnection.class);
    String role = "role2";
    olapConnection.setRoleName(role);
    return olapConnection;
函数的作用是:返回模式文件中指定的角色。
如果我注释掉setRoleName(角色)部分,它就可以正常工作。

这不是在olap4j中设置角色的方法。尝试使用。

我更新了OP,这只是给了我另一个例外。很遗憾,谷歌一点也帮不上忙。我遇到了完全相同的问题,尝试了两种方法来设置角色(通过url和setRoleName),两者都会产生完全相同的错误。XMLA驱动程序是否支持角色?这在olap4j xmlaservlet端看起来是个问题。请在我们的案例跟踪器()中报告此问题。为了记录,异常消息包含以下内容:行集“DISCOVER_PROPERTIES”不支持属性“roles”
<faultcode>
    SOAP-ENV:Server.00HSBB01
</faultcode>
<faultstring>
    XMLA SOAP Body processing error
</faultstring>
<faultactor>
    Mondrian
</faultactor>
<detail>
    <XA:error xmlns:XA="mondrian sourceforge net">
        <code>
            00HSBB01
        </code>
        <desc>
            The Mondrian XML: Mondrian Error:Internal error: Rowset 'DISCOVER_PROPERTIES' does not support property 'Roles'
        </desc>
    </XA:error>
</detail>
 </SOAP-ENV:Fault>
        Connection connectionXMLA = DriverManager.getConnection(dbUrl, p);
    OlapWrapper wrapper = (OlapWrapper) connectionXMLA;
    OlapConnection olapConnection = wrapper.unwrap(OlapConnection.class);
    String role = "role2";
    olapConnection.setRoleName(role);
    return olapConnection;