0

我正在使用以下代码使用 OLAP4j 1.1.0 从 java 访问 mssql 分析服务多维数据集

Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");
OlapConnection con = (OlapConnection) 

DriverManager.getConnection("jdbc:xmla:Server=http://mssql.com/mssql/msmdpump.dll;"+
"Cache=org.olap4j.driver.xmla.cache.XmlaOlap4jNamedMemoryCache;"+
"Cache.Name=MyNiftyConnection;Cache.Mode=LFU;Cache.Timeout=600;Cache.Size=100", 
"username", "password");

OlapWrapper wrapper = (OlapWrapper) con;
OlapConnection olapConnection = wrapper.unwrap(OlapConnection.class);
OlapStatement stmt = olapConnection.createStatement();

CellSet cellSet = stmt.executeOlapQuery("SELECT {" +
" [Measures].[LoginTime_Format]," +
"[Measures].[EngageTime_Format]," +
"[Measures].[ChatTime_Format]," +
"[Measures].[AverageHandleTime_Format]," +
"[Measures].[MultipleChatTime_Format]," +
"[Measures].[NonEngagedTime_Format]," +
"[Measures].[TimeAvailable_Format]," +
"[Measures].[TimeAvailableNotChatting_Format]," +
"[Measures].[TimeNotAvailable_Format]," +
"[Measures].[TimeNotAvailableChatting_Format]," +
"[Measures].[AcdTimeouts]," +
"[Measures].[AvgConcurrency]," +
"[Measures].[OperatorUtilization]} ON 0," +
" NON EMPTY ([DimTime].[CalenderDayHour].[CalenderDayHour], [DimAgent].[Agent]."+
"[Agent],[DimAgent].[Agent Name].[Agent Name]) ON 1" +
" FROM (SELECT [DimClient].[Client].&[4] ON 0 FROM" +
" (SELECT [DimTime].[CalenderDayHour].[CalenderDayHour].&[2013010100]:"+
"[DimTime].[CalenderDayHour].[CalenderDayHour].&[2013121216] ON 0 FROM [247OLAP]))");

当我运行此代码时,我在 executeOlapQuery 行收到以下异常-

线程“main”中的异常 java.lang.RuntimeException: [FATAL]:1:1: prolog 中不允许内容。

在 org.olap4j.driver.xmla.XmlaOlap4jUtil.checkForParseError (XmlaOlap4jUtil.java:134)

populateList(DeferredNamedListImpl.java:136) at org.olap4j.driver.xmla.DeferredNamedListImpl.getList(DeferredNamedListImpl.java:90) at org.olap4j.driver.xmla.DeferredNamedListImpl.size(DeferredNamedListImpl.java:116) at org.olap4j .driver.xmla.XmlaOlap4jConnection.getOlapDatabase(XmlaOlap4jConnection.java:451) 在 org.olap4j.driver.xmla.XmlaOlap4jConnection.getOlapCatalog(XmlaOlap4jConnection.java:501) 在 org.olap4j.driver.xmla.XmlaOlap4jConnection.getCatalog(XmlaOlap4jConnection.java) :496) at org.olap4j.driver.xmla.XmlaOlap4jStatement.executeOlapQuery(XmlaOlap4jStatement.java:291) at com.tfsc.ilabs.olap4j.POC.main(POC.java:28) 原因:org.xml.sax。 SAXParseException:prolog 中不允许有内容。在 org.olap4j.driver.xmla.XmlaOlap4jUtil 的 org.apache.xerces.parsers.DOMParser.parse(未知来源)。

任何帮助都感激不尽。

4

1 回答 1

1

您应该使用 WireShark 或类似的东西检查服务器发回的内容。当 XML 解析器试图解析它得到的响应时,就会发生这种错误。服务器可能没有发回 XML 内容。

于 2013-08-25T17:52:59.497 回答