2010-06-19 6 views
2

J'essaie de créer un agent et de l'exécuter. J'ai créé deux classes, l'une prolonge AgentBase et l'autre est une classe principale normale. J'ai écrit le code pour l'agent dans la 1ère classe et essaye de l'exécuter à partir de la deuxième classe. Mais je ne suis pas capable d'y accéder. Je suis un novice complet ici, n'importe quel conseil serait apprécié.Comment créer et exécuter un agent à partir de Java, à l'aide de l'API Lotus Notes

Agent Classe:

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 Classe:

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); 

Répondre

2

Lorsque vous dites que vous ne pouvez pas accéder à l'agent, obtenez-vous une erreur? Vous n'avez pas besoin de parcourir la collection d'agents à la recherche du premier agent. Vous pouvez utiliser GetAgent ("nom_agent"), puis Agent.run(). Si votre code Java semble trouver l'agent et l'exécuter, mais rien ne se passe, vérifiez les erreurs possibles dans la base de données log.nsf de votre serveur

+1

hey merci pour la réponse correspond à mon problème avec http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/052ce2e1d94ac7b9852571870037a86a?OpenDocument en ce moment, je suis suite à la solution proposée là !! –

2

Ces 2 liens sont un bon guide pour vous de passer par. Cela devrait vous aider à concevoir des agents Java en utilisant eclipse.

ibm

LekkimWorld

+0

.. Thanx bons liens –

1

Vous avez défini deux points d'entrée principaux dans votre agent de notes, mais dans le contexte d'un agent de notes, seul NotesMain s'exécutera. La méthode principale statique ne se déclenche qu'en dehors du contexte d'un agent de notes, par exemple lors de l'exécution d'un IDE tiers tel que Netbeans ou Eclipse.

Pour que votre code s'exécute dans le contexte d'un agent Notes, modifiez simplement votre point d'entrée NotesMain pour effectuer tout le travail dont vous avez besoin.

aussi .. quelle est cette référence à sun.management.Agent pour ??

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(); 

    } 

    } 
Questions connexes