Как создать и запустить агент из Java, используя API Lotus Notes

Я пытаюсь создать агент и запустить его. Я создал два класса, один расширяет 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);

person Nitin Garg    schedule 19.06.2010    source источник


Ответы (3)


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

person Ed Schembor    schedule 20.06.2010
comment
эй, спасибо за ответ, моя проблема соответствует www-10.lotus.lotus. com/ldd/nd6forum.nsf/ прямо сейчас я следую предложенному там решению!! - person Nitin Garg; 21.06.2010

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

ibm

LekkimWorld

person angryITguy    schedule 20.06.2010

Вы определили две основные точки входа в своем агенте заметок, однако в контексте агента заметок будет выполняться только NotesMain. Статический основной метод будет срабатывать только вне контекста агента заметок, например, при запуске в сторонней среде 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();

    }

  }
person tim    schedule 14.01.2011