У нас есть 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