Question

I am currently tasked to build some kind of healthcheck-application, which is later to be included in a jboss environment. But first things first. I need to access 3 different types of databases: MS SQL relational, TM1 and MS SQL Analysis Servies. While the first two seem to be manageable, I have encountered a problem trying to access Analysis Services through java. Most commonly, the olap4j library seems to be used, but this is based on the msmdpump.dll, tunneling the response through the IIS. We cannot use this approach, since the IIS is not in use and we do not have system access to the Analysis Services Server.

In short words: How to access Analysis Services in Java without using msmdpump.dll? We need to send simple querys in either MDX or XMLA. Both client and server are using Windows Server 2008 R2. The Analysis Services version is 2008 R2 as well. Analysis Services is provided to us as a service, we do not have access to the system itself.

It seems to be an option to use a powershell script to access Analysis Services and to call this script through java. But I would rather avoid this approach if there is a better option.

Thanks for any help!

Was it helpful?

Solution

I do not think you can avoid the msmdpump.dll in IIS if you want to call Analysis Services from Java.

The Analysis Services server itself uses SOAP structurally but a Microsoft specific binary SOAP format (see http://sqlblog.com/blogs/mosha/archive/2005/12/02/analysis-services-2005-protocol-xmla-over-tcp-ip.aspx for some details). This communication protocol is understood by the ADOMD.NET client driver and msmdpump.dll and nothing else. Thus you can can use write your application in .net or any language capable of interfacing with .net - or you can use any environment on the client that can send and receive http requests via msmdpump.dll hosted in IIS. Actually, msmdpump.dll does nothing else but a translation between TCP using binary compressed XML and http using uncompressed standard XML (and translating between the http authentication mechanisms and integrated security which also can be difficult to implement in Java).

As far as I am aware, Microsoft claims some rights on their binary protocol, so you may even violate their rights in case you would try to develop a tool yourself that directly talks to AS from Java.

Thus the only way to not use msmdpump.dll in IIS as a proxy between you Java application and the AS server would be to develop your own proxy in .net that would more or less implement what msmdpump.dll does already: translate between TCP using binary compressed XML and some other protocol that you define between your .net component and your Java component, probably just exchanging the XMLA request and the XML answer. Or you could implement a more high-level API between ADOMD.NET and your Java application. But there would be no way around some .net development in this case, which I would not think to be worth the effort and complexity.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top