2015-03-26 4 views
0

Я получаю исключение при вызове метода NotesCalendar.getNewInvitations.Получение исключения при использовании NotesCalendar.getNewInvitations

NotesException: NotesCalendar error: The database handle is NULL 
    at lotus.domino.local.NotesCalendar.NgetNewInvitations(Native Method) 
    at lotus.domino.local.NotesCalendar.getNewInvitations(Unknown Source) 
    at JavaAgent.main(Unknown Source) 

Я пытаюсь запустить этот код локально на Domino Server.

import lotus.domino.*; 

public class JavaAgent extends NotesThread { 

public static void main(String []args){ 
    try  
     {   
      NotesThread.sinitThread(); // start thread    
      Session session = NotesFactory.createSession(); 
      System.out.println("session="+session); 
      // (Your code goes here) 
      DbDirectory dbdir = session.getDbDirectory(""); 
      System.out.println("dbdir="+dbdir); 
      Database db1= session.getDatabase("server", "Conf"); 


      NotesCalendar cal = session.getCalendar(db1); 


      java.util.Calendar jdt = java.util.Calendar.getInstance(); 
      jdt.set(2015, 1, 1, 1, 1, 1); 
      DateTime dt1 = session.createDateTime(jdt); 
      DateTime dt2 = session.createDateTime("Yesterday 02"); 
      // java.util.Vector invites = cal.getNewInvitations(dt1, dt2); 
      // System.out.println("invites "+invites.size()); 
      java.util.Vector invites= cal.getEntries(dt1, dt2); 
      for (int j = 0; j < 3; j++) { 
      // Create document to post results 
      Document doc = db1.createDocument(); 
      doc.appendItemValue("Form", "main"); 
      doc.appendItemValue("subject", "New invitations"); 
      RichTextItem body = doc.createRichTextItem("body"); 
      if (invites.size() == 0) body.appendText("No invitations"); 
      else { 
       for (int i = 0; i < invites.size(); i++) { 
        NotesCalendarNotice cale = (NotesCalendarNotice)invites.elementAt(i); 
        body.appendText(cale.read()); 
       cale.recycle(); 
        body.addNewLine(); 
       } 
      } 
      doc.save(true, true); 
      java.util.concurrent.TimeUnit.MINUTES.sleep(30); 
      invites = cal.getNewInvitations(dt1, cal.getUntilTime()); 
     } }  
      catch(Exception e) 
     {   
      e.printStackTrace(); 
     }   
      finally 
     {   
      NotesThread.stermThread(); // must terminate every thread 
     } 
    }  
} 
+0

, на какой строке в коде отображается ваш код? Не могли бы вы указать на это :-) – jyrkim

+0

Если вы выполняете локально на сервере, измените «server» на «» на ваш вызов 'session.getDatabase()'. Также попробуйте использовать абсолютное имя пути для аргумента DB - включая расширение на тот же вызов. Вы можете сделать это в любом случае. Имя БД означает, что оно будет найдено в каталоге заметок/данных. В любом случае попробуйте добавить расширение. – jch

+0

Какая база данных Conf.nsf? Я предполагаю, что он основан на шаблоне дизайна ResourceReservation. Если это так, я не могу воспроизвести проблему, но я не думаю, что getNewInvitations() имеет смысл для базы данных резервирования. Он был разработан для работы с почтовым файлом. Можете ли вы попробовать тот же код с почтовым файлом? –

ответ

1

Простой ответ getNewInvitations() не имеет смысла в контексте базы данных резервирования ресурсов. Этот метод был разработан для чтения необработанных приглашений из почтового файла.

Однако в комментариях вы говорите, что ваш код также не работает для почтовых файлов. Возможно, было бы полезно получить что-то более простое в работе, а затем использовать его. Я просто попробовал следующий код:

 database = session.getDatabase(null, "mail/user.nsf"); 
     NotesCalendar calendar = session.getCalendar(database); 

     // Start date is 01-Jan-2015 
     java.util.Calendar start = java.util.Calendar.getInstance(); 
     start.set(2015, 0, 1); 
     dtStart = session.createDateTime(start); 

     // End date is now 
     java.util.Calendar end = java.util.Calendar.getInstance(); 
     dtEnd = session.createDateTime(end); 

     // Get entries on the calendar between start and end 
     Vector<?> entries = calendar.getEntries(dtStart, dtEnd); 
     System.out.println("Number of entries is " + entries.size()); 

     // Get invitations from start date (from the Inbox) 
     Vector<?> invites = calendar.getNewInvitations(dtStart, calendar.getUntilTime()); 
     System.out.println("Number of invites is " + invites.size()); 

Все работало как и ожидалось. Возможно, вы могли бы попробовать приведенный выше код и посмотреть, не вызывает ли getNewInvitations() исключение.

+0

Спасибо Дэйв. Теперь я получаю различное исключение. Я использую Domino 9.0.1. Не уверен, почему он собирается в пакет lotus.domino.cso, даже я запускаю локально на сервере domino. Примечания Исправлено: Не реализовано \t at lotus.domino.cso.Base .notImplemented (Unknown Source) \t на lotus.domino.cso.Session.getCalendar (Unknown Source) \t в JavaAgent.main (JavaAgent.java:14) –

+0

@Anil, вы должны иметь NCSO.jar на пути к классу. Это необычно для сервера Domino, так как Notes.jar всегда установлен. Предлагаю вам найти и удалить NCSO.jar. –

Смежные вопросы