我正在使用JACOB以便将消息写入COM接口。
Dispatch dispatch = new Dispatch("<Interface Name>");
Variant response = Dispatch.call(dispatch, <DISPID>, message);
这在localhost上完美运行。但是如何使用JACOB api调用其他一些机器/ IP地址上的接口
答案 0 :(得分:0)
JACOB似乎无法远程访问(DCOM呼叫)。
JACOB Project mailing-list FAQ
我可以跨机器或操作系统调用COM组件吗?
这个问题的答案是否定的。jacob的实现方式是使用JNI和专为Windows平台设计的c ++ DLL。 COM是Microsoft定义的二进制标准,因为据我所知,它尚未移植到任何其他平台。 Jacob只是COM的Java桥,它定义了组件在同一台机器上时如何相互通信。 DCOM标准定义了组件跨网络通信的方式,但是Jacob不支持DCOM。
解决方案:
或者,如果本地运行的COM对象在内部支持远程访问,则可能很有用。
似乎是以下文章。
Jacob connect to Remote Computer for WMI support
The JACOB Project: A JAva-COM Bridge
下载
JACOB二进制发行版(jacobBin_XX.zip)包括:
- jacob.jar:Java类的JAR文件,您必须将其添加到CLASSPATH中。程序包名称将com.ms替换为com.jacob(例如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对象。
任意设计主应用程序和代理应用程序,以便它们可以使用套接字或其他方式相互通信。