Java + Lotus 8.5.3

26.05.2014
9
0
#1
Всем привет. У меня такая задача, есть приложение, которое написано было на C# и дружила с lotus при помощи библиотеки Interop.Domino.DLL, но как выяснилось это невозможно на 64 битных машинах делать. IBM сам где то такое написал. Теперь нужно написать приложение которое будет делать тоже самое, но и на 64битных. Решил писать на Java, есть netBeans 7.2.1, лотус 8.5.3, на форуме прочитал что это можно сделать при помощи DIIOP, не могли бы подсказать, как это сделать поэтапно. Нашел в хэлпе инфу, но не получается.
 

garrick

Well-Known Member
Lotus team
26.10.2009
879
78
#2
В лотусовом хелпе есть описание классов с примерами. Java Classes Coding Guidelines. Там же есть примеры подключения и пр. Пробуйте, спрашивайте конкретно что не получается.
 
26.05.2014
9
0
#3
На сервере поднята служба DIIOP
Есть пользователь, мы его используем для входа на приложение с xpages, все прекрасно логиниться.
В java приложении добавил два jar файла Notes.jar и NCSO.jar
Вот собственно код:
Код:
import lotus.domino.*;

/** 
*
* @author 
*/
public class JavaDIIOP
{
public static void main(String argv[])
{
try {
System.out.println("test ");
Session s = NotesFactory.createSession(serverPath, userName, userPassword);
// To bypass Readers fields restrictions
// Session s = NotesFactory.createSessionWithFullAccess();
String p = s.getPlatform();
System.out.println("Platform = " + p);
} catch (Exception e) {
e.printStackTrace();
}
}

}
при запуске выходит предупреждение:

NotesException: Server access denied
at lotus.domino.NotesExceptionHelper.read(Unknown Source)
at lotus.domino.NotesExceptionHolder._read(Unknown Source)
at lotus.priv.CORBA.iiop.RepImpl.invoke(Unknown Source)
at lotus.priv.CORBA.portable.ObjectImpl._invoke(Unknown Source)
at lotus.domino.corba._IObjectServerStub.createSession(Unknown Source)
at lotus.domino.cso.Session.initSession(Unknown Source)
at lotus.domino.cso.Session.<init>(Unknown Source)
at lotus.domino.cso.Session.createSession(Unknown Source)
at lotus.domino.NotesFactory.createSessionUP(Unknown Source)
at lotus.domino.NotesFactory.createSession(Unknown Source)
at javadiiop.JavaDIIOP.main(JavaDIIOP.java:18)
 

garrick

Well-Known Member
Lotus team
26.10.2009
879
78
#4
Notes сессию можно инициализировать только в Notes потоке. Внимательнее смотрите примеры, там есть конкретно про DIIOP. Убедитесь что всё правильно настроено на сервере, описание как настроить DIIOP есть в хелпе администратора.

Добавлено: А почему решили использовать именно DIIOP? Обычный API (Notes.jar) и работает быстрее, и никакой головной боли с настройкой сервера. Правда нужен клиент или сервер там, где исполняется ваше приложение.
 
26.05.2014
9
0
#6
Notes сессию можно инициализировать только в Notes потоке. Внимательнее смотрите примеры, там есть конкретно про DIIOP. Убедитесь что всё правильно настроено на сервере, описание как настроить DIIOP есть в хелпе администратора.

Добавлено: А почему решили использовать именно DIIOP? Обычный API (Notes.jar) и работает быстрее, и никакой головной боли с настройкой сервера. Правда нужен клиент или сервер там, где исполняется ваше приложение.
А как через этот API? Мне бы пример как получить доступ к базе и к документу.
Клиент будет установлен на всех рабочих станциях. Так что этот вариант меня также устраивает
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 490
366
#8
при работе через notes.jar какие требования к клиенту и к домино?
никаких
но запрос пароля будет в виде "безобразного" окошка
 

garrick

Well-Known Member
Lotus team
26.10.2009
879
78
#9
Никаких особых требований - оно просто должно быть и должно быть прописано в PATH (Lotus Notes клиент я имею ввиду), чтобы notes.exe мог запускаться из любого каталога с командной строки. На сервере ничего настраивать не надо. Имя пользователя берётся из user.id, прописанного в notes.ini, хотя есть варианты... Примеры всё там же.

А что хотите сделать, если не секрет?


Добавлено:
никаких
но запрос пароля будет в виде "безобразного" окошка
Если поставить галочку в клиенте "не запрашивать пароль для других Notes приложений", то если пользователь уже залогинился, никаких окошек не будет. Так же не будет, если имя и пароль указать в коде.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 490
366
#10
Если поставить галочку в клиенте "не запрашивать пароль для других Notes приложений", то если пользователь уже залогинился, никаких окошек не будет. Так же не будет, если имя и пароль указать в коде.
первое - несекурно, второе (часом ничего не путаете?) - какие указывать, если пароль привязан к ИД?
 

garrick

Well-Known Member
Lotus team
26.10.2009
879
78
#11
NotesFactory class. Пароль того пользователя, чей ID.
Код:
createSession((String)null, (String)null, passwordString) -- Access is granted if the password matches the Notes user ID password.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 490
366
#12
NotesFactory class. Пароль того пользователя, чей ID.
Код:
createSession((String)null, (String)null, passwordString) -- Access is granted if the password matches the Notes user ID password.
м-да... никогда не пользовался, м.б. это тока с 6.5 пошло (последний раз вызывал подобное для 5-ки)

Добавлено: хотя в заметках, в хэлпе 6.5 не написано - что это специфика с 6.х