Lotus Notes API выдает ошибку при доступе к NSF - PullRequest
0 голосов
/ 17 декабря 2011

Я работал над доступом к данным Lotus Notes (.nsf) с внешнего сервера с помощью JAVA Lotus Notes API, но при доступе к NSF я получаю следующую ошибку для множества функций.

NotesException: Not implemented
  at lotus.domino.cso.Base.notImplemented(Unknown Source)
  at lotus.domino.cso.View.getAllUnreadEntries(Unknown Source)
  at com.lotus.GetName.runNotes(GetName.java:40)
  at lotus.domino.NotesThread.run(Unknown Source)

Наблюдения:

  1. Я перепроверил свои настройки с помощью пути к классам (Notes.jar)
  2. Доступ к внешнему серверу.
  3. Возможность создания сеансаLotus Domino на внешнем сервере

Поэтому я хотел бы попросить всех о любых предложениях или решениях для решения этой проблемы.


Спасибо за ваш быстрый ответ.Я правда ценю это.Я использую NCSO.jar и да, я делаю удаленные звонки. Я проверил с моим администратором и попросил такой же NCSO.jar, как и Notes.jar.Используемый ими сервер - 8.5.Но все равно выдает ту же ошибку.Кроме того, я не знаю, как писать и использовать Java с использованием Eclipse, так как я совершенно новичок в Notes Java Development.Пожалуйста, помогите мне как можно скорее.Благодарю.:)

Код, который я использую:

public class GetName
{
  public static void main(String argv[])
  {
       try
       {

           Database db;

           String ior = NotesFactory.getIOR("****");

             Session s =  NotesFactory.createSessionWithIOR(ior,"****","****");

             db =  s.getDatabase("****","mail/mail1/****");

    View v =  db.getView("$Inbox");

System.out.println(v.getAllUnreadEntries().getCount());// Getting error on this line
}
}

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Я собираюсь сделать некоторые выводы здесь без дополнительной информации. Во-первых, ошибка указывает на то, что вы используете функцию, доступную только в Lotus Notes / Domino 8.5. Учитывая, что ошибка говорит «не реализовано», я предполагаю, что вы используете Notes.jar / NCSO.jar, который не реализует getAllUnreadEntries. Я подозреваю, что эта проблема скорее экологическая, чем ваша логика.

Убедитесь, что ваши jar-файлы, импортированные в ваш проект, взяты из Domino 8.5. Более ранние версии Java API Domino не поддерживают "getAllUnreadEntries".

Лучший способ убедиться в этом - найти и скопировать файлы jar, которые установлены (по умолчанию) в клиенте Lotus Notes (находится в каталоге notes \ jvm \ lib \ ext). Кроме того, убедитесь, что файлы JAR, с которыми вы компилируете, соответствуют версии, с которой вы работаете. Итак, если вы разработали это с помощью jar Notes 8.5, и он работает на Domino 7 или 8.0 на сервере или клиенте, среда выполнения выдаст ошибку, пытаясь запустить метод, который не существует. Вам нужно убедиться, что он работает на 8.5.

Вот пример java-агента, извлеченного из справки Domino Designer, который обращается к непрочитанным записям в представлении.

import lotus.domino.*;

public class JavaAgent extends AgentBase {

  public void NotesMain() {
    try {
      Session session = getSession();
      AgentContext agentContext = session.getAgentContext();
      // (Your code goes here) 
      Database db = agentContext.getCurrentDatabase();
      View view = db.getView("All");
      ViewEntryCollection vec = view.getAllUnreadEntries();
      System.out.println("View has " +
      vec.getCount() + " unread entries");     
      view.markAllRead();
      view.refresh();
      vec = view.getAllUnreadDocuments();
      System.out.println("View has " +
      vec.getCount() + " unread entries after markAllRead");    
    } catch(Exception e) {
      e.printStackTrace();
    }
  }
}

Это может не совсем отражать то, что вы пытаетесь сделать, потому что он использует «AgentBase» для агента Java. Но все, что в заявлении try, применимо. Похоже, вы работаете вне агента Notes.

Вы можете написать любой класс, который использует Domino-Java API, убедившись, что Notes.jar и NCSO.jar находятся в вашем пути к классам, и проверьте, какой импорт фактически используется. Если вы не делаете удаленных вызовов , вы можете просто использовать lotus.domino. *, А не lotus.domino.cso. *.

0 голосов
/ 18 декабря 2011

Если Notes.jar, который вы использовали, был взят из локальной установки Notes, то я думаю, что его можно использовать только для доступа к локально запущенному клиенту Notes. Для доступа к удаленному серверу есть еще один jar-файл с именем NCSO.jar, который реализует удаленный протокол Corba / IIOP. Возможно, вам нужно попросить администратора предоставить вам копию этого файла с сервера.

...