JACOB - 远程调度COM接口调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JACOB - 远程调度COM接口调用相关的知识,希望对你有一定的参考价值。
我正在使用JACOB将消息写入COM接口。
Dispatch dispatch = new Dispatch("<Interface Name>");
Variant response = Dispatch.call(dispatch, <DISPID>, message);
这在localhost上完美运行。但是如何使用JACOB api来调用某些其他机器/ IP地址上的接口
JACOB似乎无法远程访问(DCOM调用)。
JACOB Project mailing-list FAQ
我可以跨机器或操作系统调用COM组件吗? 这个问题的答案是否定的。实现jacob的方式是使用JNI和为windows平台设计的c ++ DLL。 COM是Microsoft定义的二进制标准,因为它尚未移植到任何其他平台(据我所知)。 Jacob只是COM的一个java桥,它定义了组件在同一台机器上时如何相互通信。 DCOM标准定义了组件如何跨网络进行通信,但Jacob不支持DCOM。
解决方案:
- 像J-Integra这样的商业产品原生支持DCOM协议。
- 使用RMI。为Jacob类创建一个包装器,然后RMI确认它。它实际上是有效的,但雅各布的主角并不想让类实现可序列化,使得整个操作稍微困难一些。
- 使用Web服务。公开你想要的东西作为Web服务,并在Java端使用SOAP和零食来访问它。
或者,如果本地工作的COM对象在内部支持远程访问,则可能很有用。
看来如下文。
Jacob connect to Remote Computer for WMI support
The JACOB Project: A JAva-COM Bridge
下载 JACOB二进制发行版(jacobBin_XX.zip)包括:
- jacob.jar:必须添加到CLASSPATH的java类的JAR文件。包名用com.jacob替换com.ms(例如com.ms.com.Variant映射到com.jacob.com.Variant。
- jacob.dll:一个小的Win32 DLL,你必须添加到你的PATH。
- 示例:以Java源代码和编译形式提供,以演示产品的各种功能。特别是,Microsoft®ADO的一组包装类作为样本提供。
源代码在JACOB源代码发行版(jacobSrc_XX.zip)中提供,其中包括Java和C ++代码。源代码分发是二进制分配的超集,因此您不需要两者。
其他人似乎有其他库,而不是JACOB。
A pure Java DCOM Bridge with j-interop
j-interop/j-interop/src/readme.htm
此外:
同样,它不能在通过LAN连接的计算机之间调用。
此外,无法使用VC ++或.NET语言远程调用本地COM对象。
解决方法是创建一个代理应用程序来调用远程计算机上的本地COM对象。
任意设计主应用程序和代理应用程序,以便它们可以使用套接字或其他方式相互通信。
以上是关于JACOB - 远程调度COM接口调用的主要内容,如果未能解决你的问题,请参考以下文章