Страница 1 из 1

Работа с Лоцией через Java

Добавлено: 28 авг 2014, 16:41
ezeng
Добрый день.

У нас есть Windows-сервер с поднятой Лоцией PDM и с Tomcat.
В Java-сервлетах, обрабатывающих запросы извне, мы хотим подключаться к Лоции и выполнять некоторые действия, вызывая ее API.
Однако у нас возникает ошибка на этапе подключения - вызове метода Connect.
Для общения с COM-проектами мы используем java-библиотеку jacob.

Код выглядит так:

Код: Выделить всё

ActiveXComponent lotsiaApp = new ActiveXComponent("LotsiaPDM.Application");
Dispatch lotsiaDispatch = lotsiaApp.getObject();
Dispatch connect = Dispatch.get(lotsiaDispatch, "ConnectAttrib").toDispatch();

Dispatch.put(connect, "DBType", "ORACLE");
Dispatch.put(connect, "Driver", "ORA");
Dispatch.put(connect, "Server", "<адрес>");
Dispatch.put(connect, "DataBase", "<имя БД>");
Dispatch.put(connect, "User", "<логин>");
Dispatch.put(connect, "Password", "<пароль>");

Dispatch.call(lotsiaDispatch, "Connect");

В результате последняя строка выдает ошибку:

Код: Выделить всё

Exception caught while calling connect on lotsiaDispatch: com.jacob.com.ComFailException: Invoke of: Connect
Source: 
Description: Unspecified Error

При этом параметры доступа правильные, аналогичный VB-скрипт на том же сервере выполняется на ура:

Код: Выделить всё

Option Explicit

Test

Sub Test
  Dim oPDM

  set oPDM = CreateObject("LotsiaPDM.Application")
  if not oPDM.IsConnected then
    oPDM.ConnectAttrib.DBType = "ORACLE"
    oPDM.ConnectAttrib.Driver = "ORA"
    oPDM.ConnectAttrib.Server = "<адрес>"
    oPDM.ConnectAttrib.User = "<логин>"
    oPDM.ConnectAttrib.Password = "<пароль>"
    oPDM.Connect()
  end if
  MsgBox oPDM.ConnectAttrib.Server
end sub
Может ли кто-нибудь поделиться соображениями, что может быть не так?

Re: Работа с Лоцией через Java

Добавлено: 24 сен 2014, 14:04
Loco
Так вроде бы эта библиотека сторонняя для Java. Может быть, дело в ней?

Re: Работа с Лоцией через Java

Добавлено: 03 окт 2014, 16:03
goreev
Другие библиотеки тоже не работают.

Re: Работа с Лоцией через Java

Добавлено: 03 окт 2014, 16:31
Loco
А что техподдержка говорит?

Re: Работа с Лоцией через Java

Добавлено: 03 окт 2014, 17:03
goreev
Loco писал(а):А что техподдержка говорит?
Они не знают, как работать с API из Java.

[Пожалуйста, не публикуйте в форуме недостоверную информацию. На первый раз это предупреждение. - Moderator_Team]

Re: Работа с Лоцией через Java

Добавлено: 03 окт 2014, 17:27
Loco
goreev писал(а):Они не знают, как работать с API из Java.
Да ну? :mrgreen: Спасибо, Вы сделали мой день! :lol:

Re: Работа с Лоцией через Java

Добавлено: 03 окт 2014, 21:54
Старик Крупский
Сорри, что не в кассу, но работают же все как-то... В презентациях с конференций пользователей регулярно упоминается работа через API. А сюда далеко не все заходят, надо вам как-то более адресно искать помощи.

Re: Работа с Лоцией через Java

Добавлено: 06 окт 2014, 14:39
Loco
Старик Крупский, да понятно, что работают. Сейчас на Java даже школьники пишут. :)
Поэтому меня и порадовали слова коллеги goreev'а, что "не умеют". (Скорее всего (и судя по реакции модератора ;) ) , техподдержка ему просто ответила что-нибудь в духе того, что по продуктам третьих фирм они не консультируют.)

По теме, давайте рассуждать логически:

1. если VB-скрип выполняется нормально, то проблема не в работе API, а либо в Java-коде, либо в настройках работы с COM-объектами на уровне операционки;

2. по словам коллеги goreev'а, проблема остается и при использовании других библиотек;

3. значит, копать нужно в настройках для работы с COM.

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

Как вариант, смотрим сюда.

Как-то так.

Re: Работа с Лоцией через Java

Добавлено: 06 окт 2014, 14:47
Старик Крупский
Loco писал(а):Сейчас на Java даже школьники пишут. :)
Я бы в школьники пошел, пусть меня научат :)