JAVA/CORBA CLASSES
Lotus Notes/Domino agents must extend AgentBase and use NotesMain() as the entry point for their functional code. Use getSession() to create a Session object. For output to browsers as well as Notes clients (the Java debug console), create a PrintWriter object with getAgentOutput().
Skeleton for Java agents
Lotus Domino Designer generates the following skeleton code when you create a Java agent. If you import the agent, you must supply similar code yourself. Minimally you must create a class that extends AgentBase, provide a function called NotesMain(), and call AgentBase.getSession() to create a Session object. The code in NotesMain() executes when the agent is launched.
import lotus.domino.*; public class JavaAgent extends AgentBase { public void NotesMain() { try { Session session = getSession(); AgentContext agentContext = session.getAgentContext(); // (Your code goes here) } catch(Exception e) { e.printStackTrace(); } } }
You may wish to modify the skeleton to deal specifically with NotesException exceptions. For example:
} catch(NotesException ne) { System.out.println(ne.id + " " + ne.text); } catch(Exception e) { E.printStackTrace();
Instead of:
} catch(Exception e) { E.printStackTrace();
Print output
For Notes clients, System.out and System.err output from foreground agents goes to the Java debug console, which you can access as a separate task through File - Tools - Show Java Debug Console. Background agents print to the Domino log.
To print to a browser from an agent started by the OpenAgent URL command, you must call AgentBase.getAgentOutput() to get a java.io.PrintWriter object. Print output from this object goes to browsers as well as the Notes client.
The following code fragment shows how to open a view in the current database by printing the URL command to a browser. (The code replaces backslashes with forward slashes and spaces with plus signs, and encloses the URL command in brackets.)
import java.io.PrintWriter;
PrintWriter pw = getAgentOutput(); Database db = agentContext.getCurrentDatabase(); String n = db.getFileName(); n = n.replace('\\', '/').replace(' ', '+'); pw.println("[/" + n + "/Main+View?OpenView]");
Specification of AgentBase
The specification (public methods) of the AgentBase class is as follows:
public class AgentBase extends NotesThread { protected Session m_session; public AgentBase(); public final void startup(AgentInfo info); public final void runNotes() throws NotesException; public void NotesMain(); public Session getSession(); public boolean isRestricted(); public PrintWriter getAgentOutput(); public void setDebug(boolean debug); public void setTrace(boolean trace); public void dbgMsg(String msg, PrintStream ps); public void dbgMsg(String msg, PrintWriter pw); public void dbgMsg(String msg); }
Example See Also