Как да създадете и стартирате агент от Java, като използвате Lotus Notes API

Опитвам се да създам агент и да го стартирам. Създадох два класа, единият разширява 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("agentname") и след това Agent.run(). Ако вашият Java код изглежда намира агента и го изпълнява, но нищо не се случва, проверете базата данни log.nsf на вашия сървър за възможни грешки

person Ed Schembor    schedule 20.06.2010
comment
хей, благодаря за отговора, проблемът ми съвпада с www-10.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 Agent, просто променете входната точка на 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