2014-01-20 28 views
3

我目前的任务是构建某种健康检查应用程序,稍后将包含在jboss环境中。但首先是事情。我需要访问3种不同类型的数据库:MS SQL关系数据库,TM1和MS SQL分析服务。虽然前两个似乎是可管理的,但我遇到了一个尝试通过java访问Analysis Services的问题。通常,似乎使用了olap4j库,但这是基于msmdpump.dll,它通过IIS对响应进行隧道传输。我们不能使用这种方法,因为IIS没有被使用,我们也没有系统访问Analysis Services服务器的权限。java中查询分析服务多维数据集,无需使用msmdpump.dll

简而言之:如何在不使用msmdpump.dll的情况下访问Java中的Analysis Services?我们需要在MDX或XMLA中发送简单查询。客户端和服务器都使用Windows Server 2008 R2。 Analysis Services版本也是2008 R2。 Analysis Services作为服务提供给我们,我们无法访问系统本身。

它似乎是一个选项,使用PowerShell脚本访问Analysis Services并通过Java调用此脚本。但如果有更好的选择,我宁愿避免这种方法。

感谢您的帮助!

回答

2

如果你想从Java调用Analysis Services,我不认为你可以避免IIS中的msmdpump.dll。

Analysis Services服务器本身在结构上使用SOAP,但是使用Microsoft特定的二进制SOAP格式(有关详细信息,请参见http://sqlblog.com/blogs/mosha/archive/2005/12/02/analysis-services-2005-protocol-xmla-over-tcp-ip.aspx)。 ADOMD.NET客户端驱动程序和msmdpump.dll可以理解此通信协议,而不是其他任何东西。因此,您可以使用.net或任何可以与.net进行交互的语言来编写应用程序 - 或者您可以使用客户端上的任何可以通过IIS中托管的msmdpump.dll发送和接收http请求的环境。实际上,msmdpump.dll除了使用二进制压缩的XML和使用未压缩的标准XML的http之间的转换(以及在HTTP认证机制和集成安全性之间进行转换(这在Java中也很难实现))之间的转换之外没有任何其他作用。

据我所知,微软声称他们的二进制协议有一些权利,所以你甚至可能会侵犯他们的权利,以防你试图自己开发一个直接与Java对话的AS的工具。

因此,不要在IIS中使用msmdpump.dll作为您的Java应用程序和AS服务器之间的代理的唯一方法就是在.net中开发自己的代理,这将会或多或少地实现msmdpump.dll已经实现的功能:使用二进制压缩的XML和您在.net组件和Java组件之间定义的一些其他协议在TCP之间进行转换,可能只是交换XMLA请求和XML答案。或者您可以在ADOMD.NET和您的Java应用程序之间实现更高级别的API。但是在这种情况下,一些.net开发是没有办法的,我认为这不值得付出努力和复杂。

+0

那么,这是一个令人失望的事实。每个其他服务器软件都允许直接的客户端 - 服务器连接,但这里Microsoft迫使我们使用他们的web服务器软件。可能还有其他原因,但我不需要喜欢它。不过,非常感谢您的澄清。我想我会使用PowerShell的方法。 –

相关问题