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

Обсуждение технических вопросов работы с системами управления базами данных (СУБД), работе с языком SQL и скриптовыми языками.
Ответить
ezeng
Новый участник
Сообщения: 1
Зарегистрирован: 28 авг 2014, 15:50
Используемое ПО: Пока не используем (иное)

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

Сообщение 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
Может ли кто-нибудь поделиться соображениями, что может быть не так?
Loco
Активный участник
Сообщения: 75
Зарегистрирован: 22 фев 2005, 12:33
Используемое ПО: Lotsia PDM PLUS LT

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

Сообщение Loco »

Так вроде бы эта библиотека сторонняя для Java. Может быть, дело в ней?
Loco
goreev
Новый участник
Сообщения: 3
Зарегистрирован: 03 окт 2014, 09:23
Используемое ПО: Lotsia PDM PLUS

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

Сообщение goreev »

Другие библиотеки тоже не работают.
Loco
Активный участник
Сообщения: 75
Зарегистрирован: 22 фев 2005, 12:33
Используемое ПО: Lotsia PDM PLUS LT

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

Сообщение Loco »

А что техподдержка говорит?
Loco
goreev
Новый участник
Сообщения: 3
Зарегистрирован: 03 окт 2014, 09:23
Используемое ПО: Lotsia PDM PLUS

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

Сообщение goreev »

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

[Пожалуйста, не публикуйте в форуме недостоверную информацию. На первый раз это предупреждение. - Moderator_Team]
Loco
Активный участник
Сообщения: 75
Зарегистрирован: 22 фев 2005, 12:33
Используемое ПО: Lotsia PDM PLUS LT

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

Сообщение Loco »

goreev писал(а):Они не знают, как работать с API из Java.
Да ну? :mrgreen: Спасибо, Вы сделали мой день! :lol:
Loco
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

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

Сообщение Старик Крупский »

Сорри, что не в кассу, но работают же все как-то... В презентациях с конференций пользователей регулярно упоминается работа через API. А сюда далеко не все заходят, надо вам как-то более адресно искать помощи.
"Лучше меньше, да лучше" (C)
Loco
Активный участник
Сообщения: 75
Зарегистрирован: 22 фев 2005, 12:33
Используемое ПО: Lotsia PDM PLUS LT

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

Сообщение Loco »

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

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

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

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

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

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

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

Как-то так.
Loco
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

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

Сообщение Старик Крупский »

Loco писал(а):Сейчас на Java даже школьники пишут. :)
Я бы в школьники пошел, пусть меня научат :)
"Лучше меньше, да лучше" (C)
Ответить