как получить доступ к Lotus базе из Java

Тема в разделе "Lotus - Программирование", создана пользователем dmik, 10 окт 2006.

Статус темы:
Закрыта.
  1. dmik

    dmik Гость

    привет. использую стандартный код из хелпа:

    Код (Text):
    import lotus.domino.*;
    public class platform implements Runnable
    {
    Database db;
    public static void main(String argv[])
    {
    Thread nt = new Thread((Runnable)t);
    nt.start();
    }
    public void run()
    {
    try
    {
    Session s = NotesFactory.createSession(host, user, pwd);
    db = s.getDatabase("myserv1/mydom","test\\calendar.nsf")         ;

    .....      

    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    }
    все это тестируется на IBM RAD 6.0.1 + Apache Tomcat 4.1
    и в консоли появляется :
    Код (Text):
    java.lang.UnsatisfiedLinkError: no nlsxbe in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1517)
    at java.lang.Runtime.loadLibrary0(Runtime.java:788)
    at java.lang.System.loadLibrary(System.java:834)
    at lotus.domino.NotesThread.load(Unknown Source)
    at lotus.domino.NotesThread.checkLoaded(Unknown Source)
    at lotus.domino.NotesThread.initThread(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
    пути прописаны в notes.ini
    JavaUserClasses=D:\Program Files\lotus\notes\data\domino\java\NCSO.jarr;D:\Program Files\lotus\notes\jvm\lib\ext\Notes.jar
    незнаю куда дальше копать, подскажите, пожалуйста.
     
  2. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    <!--QuoteBegin-dmik+10:10:2006, 12:44 -->
    <span class="vbquote">(dmik @ 10:10:2006, 12:44 )</span><!--QuoteEBegin-->пути прописаны в notes.ini
    JavaUserClasses=D:\Program Files\lotus\notes\data\domino\java\NCSO.jarr;D:\Program Files\lotus\notes\jvm\lib\ext\Notes.jar
    незнаю куда дальше копать, подскажите, пожалуйста.
    [snapback]45198" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Корбу поднял?Переменные среды прописал?

    Темболее не рекомендуется использовать оба jar'a сразу
     
  3. dmik

    dmik Гость

    корбу включил в file/preferences/user preferences / additional options.
    что надо прописать в переменные среды?

    по поводу 2-х jar-ов разберусь потом. хоть бы так заработало. (если 2 jar-а будут мешать др.др., думаю, будет другой exception)
     
  4. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    <!--QuoteBegin-dmik+10:10:2006, 13:15 -->
    <span class="vbquote">(dmik @ 10:10:2006, 13:15 )</span><!--QuoteEBegin-->корбу включил в file/preferences/user preferences / additional options.
    что надо прописать в переменные среды?
    [snapback]45204" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Вобщето корбу надо запустить как сервис на серваке в Notes.ini прописатьServerTasks = ... DIIOP
     
  5. dmik

    dmik Гость

    так, новичек я в лотусе...
    значит установил себе Lotus Notes, Minder,DominoDesigner.
    Lotus notes конектиться к серваку по адресу aaaaa/bbbbb/com (не указано чтото вроде http:\\ ... так надо?)
    но есть и локальные базы. их тоже можно смотреть. или сервак ставится вместе с notes и мне надо в моем notes.ini чтото прописать? (что?)


    ура!! прописал в path путь к лотусу... exeption изменился на :
    Код (Text):
    java.lang.NoClassDefFoundError: lotus/domino/local/NotesReferenceQueue
    at lotus.domino.NotesThread.checkLoaded(Unknown Source)
    at lotus.domino.NotesThread.initThread(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
     
  6. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    тебе надо в notes.ini сервака прописать DIIOP перегрузить сервак. в коде в переменную host передать host сервака к примеру myhost.host.com user имя юзера и pwd notes пароль
     
  7. dmik

    dmik Гость

    не работает никак :ph34r:
    тот же java.lang.NoClassDefFoundError вылетает.
    даже не доходит до NotesFactory.createSession(.....)
    тоесть во время:

    platform1 t = new platform1();
    t.start();

    вываливается гдето этот exception
     
  8. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    <!--QuoteBegin-dmik+11:10:2006, 12:56 -->
    <span class="vbquote">(dmik @ 11:10:2006, 12:56 )</span><!--QuoteEBegin-->не работает никак
    тот же java.lang.NoClassDefFoundError вылетает.
    даже не доходит до NotesFactory.createSession(.....)
    тоесть во время:

    platform1 t = new platform1();
    t.start();

    вываливается гдето этот exception
    [snapback]45261" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ну да , ты наследуешь Runnable и при этом неправельно его вызываешь.
    попробуй так
    Код (Text):
    import lotus.domino.*;
    public class Test extends NotesThread{
    static int i;
    public static void main(String[]argv){
    Test thd = new Test();
    thd.start();
    }
    public void runNotes(){
    try
    {
    Session session=NotesFactory.createSession(host,user,pwd);
    }

    catch(Exception e){ e.printStackTrace();}
    }

    }
     
  9. dmik

    dmik Гость

    пробовал разные примеры.
    сейчас этот:

    Код (Text):
    import lotus.domino.*;
    public class platform1 extends NotesThread{
    public static void main(String argv[]){
    platform1 t = new platform1();
    t.start();
    }
    public void runNotes(){
    try{
    Session s = NotesFactory.createSession();
    }
    catch (Exception e){
    e.printStackTrace();
    }
    }
    }
    и exception:

    Код (Text):
    java platform1
    Exception in thread "main" java.lang.NoClassDefFoundError: lotus/domino/NotesThread
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    ......
    тут у меня мысль что notesThread "не видит" сервер.
    все устанавливал по мануалу в лотусе.
    diiop в notes.ini включен.
    может я неправильно установил лотус сервер?
    у меня был установлен IBM Lotus Notes, Designer, Admin Clients 7.0.1 for Windows English на d:\program files\
    потом я установил Lotus Domino server 7.0.1 на c:\program files\
    появился ярлык запуска сервера. запускается консольное приложение и в той же папке есть тоже nlnotes.exe но он не видит ни 1 базы.

    как вобще, устанавливать и запускать все это чудо надо? как взаимодействует java приложение с лотус-сервером. (тоесть как работает корба)
    мне кажется проблема в этом
     
  10. sanch

    sanch Well-Known Member

    Регистрация:
    17 июл 2006
    Сообщения:
    216
    Симпатии:
    0
    <!--QuoteBegin-dmik+12:10:2006, 13:52 -->
    <span class="vbquote">(dmik @ 12:10:2006, 13:52 )</span><!--QuoteEBegin-->как вобще, устанавливать и запускать все это чудо надо? как взаимодействует java приложение с лотус-сервером. (тоесть как работает корба)
    мне кажется проблема в этом
    [snapback]45373" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Не важно где у тебя стоит сервак и где клиент главное чтоб насторйки были правильными.Проблема не в корбе. Проверь правильно ли прописаны пути, подключен jar. Посмотри на консль сервака че он пишет . Кста в чем компилишь код?
     
  11. dmik

    dmik Гость

    урааа! все заработало! createsession() работает. правда осталось host, user, password прописать.
    проблемма была в том, что класс notesThread используется когда создается обычный сеанс, а класс Thread - когда сеанс CORBA. и юзать надо только NCSO.jar (для корбы) в classpath.
    еще поставил юзеров в Run Restricted Java/ javascript в свойствах сервера на вкладке sequrity.
     
  12. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Аналогичная совершенно проблема - необходимо получить сессюи лотусовую из вне.
    Что сделал:
    в notes.ini сервера прописал
    JavaUserClasses=D:\DominoLNData\domino\java\NCSO.jar;
    ServerTasks= ... DIIOP
    Получаю
    Хотелось бы знать, что это за кобра и как её "поднимать", подключать к лотусу.... Зачем в настройках пользователя что-то указывать? Вобщем хотелось бы разобраться и решить проблему.... и нет ли более простого способа подключения к Domino? Посл вопрос - почему сервер указывается в виде "myhost.host.com"?
     
  13. dmik

    dmik Гость

    у меня щас вылетает :
    Код (Text):
    NotesException: Could not get IOR from Domino Server: java.net.ConnectException: Connection refused: connect
    at lotus.domino.NotesFactory.requestIOR(Unknown Source)
    at lotus.domino.NotesFactory.getIOR(Unknown Source)
    at lotus.domino.NotesFactory.createSessionUP(Unknown Source)
    at lotus.domino.NotesFactory.createSession(Unknown Source)
    at by.iba.midlet_test.lotus_db.platform1.run(platform1.java:33)
    понятно изза чего, но как решить? (конекчусь к удаленному лотусу, не локальный) может запущеный локальный lotus notes выключить? (те же логин/пароль)


    to fedotxxl:
    юзай класс Thread вместо notesThread.
    в настройках пользователя указывать - затем чтоб лотус знал, кому можно дать доступ. имхо.
    сервер указывается в виде myhost/host/com в createsession(....)
    более простой способ: в книге написано ...это просто :() "lotus notes & domino development" (Debbie Lind)
     
    2 пользователям это понравилось.
  14. jimm

    jimm Гость

    народ имеется такой пример.
    Код (Text):
    import lotus.domino.*;
    import lotus.domino.NotesFactory;
    import lotus.domino.Session;
    public class ExampleAgent1 extends NotesThread{
    public static void main(String[] args) {
    try {

    NotesThread.sinitThread();
    new ExampleAgent1().NotesMain();

    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    NotesThread.stermThread();
    }
    }
    public void NotesMain() {                    
    try {
    String host = "192.168.0.3";
    Session s = NotesFactory.createSession(host,"Иванов Иван Иванович","пароль");                                                            
    } catch (Exception e) {
    e.printStackTrace();
    }
    }  

    }
    в результте выдает
    Код (Text):
    NotesException: Could not open Notes session
    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 ibm.ExampleAgent1.NotesMain(ExampleAgent1.java:27)
    at ibm.ExampleAgent1.main(ExampleAgent1.java:12)
    Caused by: org.omg.CORBA.COMM_FAILURE: java.net.ConnectException: Connection refused: connect Host: 127.0.0.1 Port: 63148 vmcid: 0x0 minor code: 1 completed: No
    DIIOP на сервере работает.
     
  15. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
  16. jimm

    jimm Гость

    Проблема оказалась в самом сервере. видать домино глюконуло, но после перезагрузки компа все стало норм
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей