0
我用main()方法編寫了一個java類,用於連接到「msmdpump.dll」並在多維數據集上執行MDX並檢索結果。像這樣:使用Weblogic上的XmlaOlap4jDriver在SASS立方體上執行查詢
public static void main(String[] args) throws ClassNotFoundException, OlapException{
Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");
Connection connection = null;;
try {
connection = DriverManager.getConnection("jdbc:xmla:Server=http://172.20.0.29:80/OLAP/msmdpump.dll"+
";Catalog=CreditCard",
"",
"");
} catch (SQLException e) {
e.printStackTrace();
}
if (null== connection){
System.out.println("Connection null");
}else
System.out.println("Connect Successfully !");
OlapWrapper wrapper = (OlapWrapper) connection;
OlapConnection olapConnection = null;
try {
olapConnection = wrapper.unwrap(OlapConnection.class);
} catch (SQLException e) {
e.printStackTrace();
}
OlapStatement statement = null;
CellSet cellSet = null;
try {
statement = (OlapStatement) olapConnection.createStatement();
cellSet = statement.executeOlapQuery(
"SELECT NON EMPTY { [Measures].[Instalment Future Amount] } ON COLUMNS"+
", NON EMPTY { ([Dim MerchantInstalmentCashFlowDate].[J Year].[J Year].ALLMEMBERS * [Dim MerchantInstalmentCashFlowDate].[Persian Month].[Persian Month].ALLMEMBERS) } ON ROWS "+
"FROM [Credit Card DW] where ([Dim Merchant].[Mrc Unique Id].[Mrc Unique Id].&[100000000000013])"
);
} catch (SQLException e) {
e.printStackTrace();
}
for (Position row : cellSet.getAxes().get(1)) {
for (Position column : cellSet.getAxes().get(0)) {
for (Member member : row.getMembers()) {
System.out.println(member.getName());
}
final Cell cell = cellSet.getCell(column, row);
System.out.println(cell.getFormattedValue());
System.out.println();
}
}
}
一切都很好,我執行它在我的本地計算機上,看到我的控制檯上的結果:)
接下來,我抄在我backbean的方法相同的代碼從JSF頁面調用它。 我部署了包含這些頁面的EAR文件,當我在瀏覽器上瀏覽jsf時,我得到了這個錯誤,這意味着應用程序沒有授權連接到.dll文件!
'401:未經授權' 的網址:HTTP:// 172.20.0.29:80/OLAP/msmdpump.dll
所有的代碼都是相同的,只是不同的是我通過執行第一類java(使用main()方法),然後我通過在Weblogic上部署的jsf調用方法。
任何機構都可以幫助我弄清楚爲什麼會發生這種情況? 在此先感謝。
感謝@Lus,但事情是當我執行它的核心Java類(相同的連接),並沒有這種未經授權的錯誤。另一方面,我測試了IIS中的所有授權選項,如Windows,基本,匿名等,但他們都沒有工作:( – soheilz92