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