JACOB-对COM接口的远程调度调用

时间:2019-05-01 17:49:27

标签: java com serial-port jacob

我正在使用JACOB以便将消息写入COM接口。

Dispatch dispatch = new Dispatch("<Interface Name>");
Variant response = Dispatch.call(dispatch, <DISPID>, message);

这在localhost上完美运行。但是如何使用JACOB api调用其他一些机器/ IP地址上的接口

1 个答案:

答案 0 :(得分:0)

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'ify。它确实有效,但是Jacob领导不想使这些类实现可序列化,这使整个操作有些困难。
  • 使用Web服务。公开您想要作为Web服务拥有的内容,并在Java端使用SOAP和点心访问它。

或者,如果本地运行的COM对象在内部支持远程访问,则可能很有用。

似乎是以下文章。

Jacob connect to Remote Computer for WMI support

ADODB Recordset Example

The JACOB Project: A JAva-COM Bridge

  

下载
  JACOB二进制发行版(jacobBin_XX.zip)包括:

     
      
  1. jacob.jar:Java类的JAR文件,您必须将其添加到CLASSPATH中。程序包名称将com.ms替换为com.jacob(例如com.ms.com.Variant映射到com.jacob.com.Variant。
  2.   
  3. jacob.dll:一个小的Win32 DLL,您必须将其添加到PATH中。
  4.   
  5. 样本:以Java源代码和编译形式提供,以演示产品的各种功能。特别是,提供了Microsoft®ADO的一组包装器类作为示例。
  6.   
     

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对象。

任意设计主应用程序和代理应用程序,以便它们可以使用套接字或其他方式相互通信。