JACOB - вызов удаленной отправки на интерфейс COM - PullRequest
0 голосов
/ 01 мая 2019

Я использую JACOB для записи сообщения в интерфейс COM.

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

Это прекрасно работает на локальном хосте.Но как я могу использовать JACOB API для вызова интерфейса на другом компьютере / IP-адресе

1 Ответ

0 голосов
/ 02 мая 2019

JACOB не может получить удаленный доступ (вызов DCOM).

Список рассылки JACOB Project FAQ

Можно ли вызвать компонент COM на разных машинах или в операционных системах?
Ответ на этот вопрос - нет. Способ, которым реализован jacob, использует JNI и библиотеку c ++ DLL, разработанную для платформы Windows. COM - это двоичный стандарт, определенный Microsoft, поскольку он еще не был перенесен (насколько я знаю) на какие-либо другие платформы. Jacob - это всего лишь Java-мост для COM, который определяет, как компоненты взаимодействуют друг с другом, когда они находятся на одной машине. Стандарт DCOM определяет, как компоненты взаимодействуют через сети, но у Джейкоба нет поддержки DCOM.

Решения:

  • Коммерческие продукты, такие как J-Integra, изначально поддерживают протокол DCOM.
  • Использовать RMI. Сделайте обертку для классов Джейкоба и RMI'ify. Это на самом деле работает, но руководитель Джейкоба не хотел, чтобы классы реализовывали сериализованность, что немного усложняло всю операцию.
  • Использовать веб-сервисы. Представьте материал, который вы хотели бы иметь в качестве веб-службы, и используйте SOAP и закуски на стороне Java для доступа к нему.

В качестве альтернативы может быть полезно, если локально работающий COM-объект поддерживает удаленный доступ внутренне.

Похоже на следующую статью.

Джейкоб подключается к удаленному компьютеру для поддержки WMI

Пример набора записей ADODB

Проект JACOB: Мост JAva-COM

Загрузка
Двоичный дистрибутив JACOB (jacobBin_XX.zip) включает в себя:

  1. jacob.jar: файл JAR для классов java, который вы должны добавить в свой CLASSPATH. Имена пакетов заменяют com.ms на com.jacob (например, com.ms.com.Variant сопоставляется с com.jacob.com.Variant.
  2. jacob.dll: небольшая библиотека Win32, которую вы должны добавить в свой путь.
  3. примеров: предоставляется в виде исходного кода Java и скомпилированной формы для демонстрации различных функций продукта. В частности, набор классов-оболочек для Microsoft® ADO предоставляется в качестве примеров.

Исходный код доступен в исходном выпуске JACOB (jacobSrc_XX.zip), который включает в себя как код Java, так и код C ++. Исходный дистрибутив - это расширенный набор двоичного кода, поэтому вам не нужно и то, и другое.


У других, похоже, есть другие библиотеки, а не JACOB.

Чистый Java DCOM Bridge с j-interop

J-Interop / J-Interop / SRC / readme.htm


Дополнительно:

Аналогично, его нельзя вызвать между компьютерами, подключенными через локальную сеть.

Также невозможно удаленно вызывать локальные COM-объекты с помощью языка VC ++ или .NET.

Обходной путь - создать прокси-приложение для вызова локального COM-объекта на удаленном компьютере.

Разработайте главное приложение и прокси-приложение произвольно, чтобы они могли взаимодействовать друг с другом с помощью сокета или других средств.

...