Как создать и запустить агент из Java, используя Lotus Notes API - PullRequest
2 голосов
/ 19 июня 2010

Я пытаюсь создать агент и запустить его. Я создал два класса, один расширяет AgentBase, а другой - обычный основной класс. Я написал код для агента в 1-м классе и пытаюсь запустить его из второго класса. Но я не могу получить к нему доступ. Я полный новичок здесь, любое руководство будет оценено.

Agent Класс:

import lotus.domino.*;

import java.util.Vector;
import sun.management.Agent;

public class anagent extends AgentBase {

  public void NotesMain() {

    try {
      Session session = getSession();
      AgentContext agentContext = 
          session.getAgentContext();

      // (Your code goes here) 

      System.out.println("I am an agent");
    } catch(Exception e) {
      e.printStackTrace();
    }
  }

Main Класс:

 public static void main(String [] args) throws NotesException {
Session session = null;
Database db = null;
        try {
        session =  NotesFactory.createSession(hostname,UserName, password);
    } catch (NotesException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    boolean x = session.isValid();
    System.out.println("success- "+x);

    try {
        db = session.getDatabase(null,"LotusDB2.nsf");
    } catch (NotesException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if(db.isOpen())
    System.out.println("database open");



        //Agent agnt = (Agent) a.firstElement();
    //agnt.toString();}
     //AgentContext agentContext = session.getAgentContext();
      // db = agentContext.getCurrentDatabase();
       Vector agents = db.getAgents();
       //lotus.domino.Agent agent = new lotus.domino.Agent();
       System.out.println("Agents in database:");
       if(agents.size()>0) System.out.println("some agents found");
       for (int i=0; i<agents.size(); i++)

       {

         lotus.domino.Agent agent = (lotus.domino.Agent)agents.elementAt(i);

Ответы [ 3 ]

2 голосов
/ 20 июня 2010

Когда вы говорите, что не можете получить доступ к агенту, вы получаете ошибку?Вам не нужно перебирать коллекцию агентов в поисках первого агента - вы можете использовать GetAgent («agentname»), а затем Agent.run ().Если ваш Java-код, похоже, находит агент и запускает его, но ничего не происходит, проверьте базу данных log.nsf на вашем сервере на возможные ошибки

2 голосов
/ 20 июня 2010

Эти 2 ссылки - хорошее руководство для вас. Это должно помочь вам разработать Java-агенты, используя eclipse.

* IBM 1004 *

LekkimWorld

1 голос
/ 14 января 2011

Вы определили две основные точки входа в агенте заметок, однако в контексте агента заметок будет выполняться только NotesMain. Статический метод main запускается только вне контекста агента заметок, например, при запуске его в сторонней IDE, такой как Netbeans или Eclipse.

Чтобы ваш код запускался из контекста агента Notes, просто измените точку входа NotesMain, чтобы выполнить всю необходимую работу.

также .. что это за ссылка на sun.management.Agent для ??

import lotus.domino.*;
import java.util.Vector;

public class AnAgent extends AgentBase {

  public void NotesMain() {
     private Session m_session;
     private AgentContext m_agentContext;
     private Database m_db;

    try {

      m_session = getSession();
      m_agentContext =  m_session.getAgentContext();

      // (Your code goes here) 
      System.out.println("I am an agent");
      m_db = m_session.getDatabase("","LotusDB2.nsf");

       if(m_db.isOpen())
            System.out.println("database open");
            Vector agents = m_db.getAgents();

            if(agents != null && agents.size()>0) {
                System.out.println("some agents found");

                for (int i=0; i<agents.size(); i++) {
                    lotus.domino.Agent agent = (lotus.domino.Agent)agents.elementAt(i);
                    // whatever it is you are trying to do here...
                }
            }

    } catch(Exception e) {

      e.printStackTrace();

    }

  }
...