如何使用 Lotus Notes API 从 Java 创建和运行代理
Posted
技术标签:
【中文标题】如何使用 Lotus Notes API 从 Java 创建和运行代理【英文标题】:How to create and run an agent from Java, using Lotus Notes API 【发布时间】:2010-06-19 09:00:08 【问题描述】:我正在尝试创建一个代理并运行它。我创建了两个类,一个扩展AgentBase
,另一个是普通的主类。
我已经为第一堂课的代理编写了代码,并试图从第二堂课中运行它。但我无法访问它。
我在这里是一个完全的新手,任何指导将不胜感激。
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);
【问题讨论】:
【参考方案1】:当您说您无法访问代理时,您是否收到错误消息?您无需遍历代理集合来寻找第一个代理 - 您可以使用 GetAgent("agentname") 然后使用 Agent.run()。如果您的 Java 代码似乎正在找到代理并运行它,但没有任何反应,请检查您服务器上的 log.nsf 数据库是否存在可能的错误
【讨论】:
嘿thanx 回复我的问题现在与www-10.lotus.com/ldd/nd6forum.nsf/… 匹配,我正在遵循那里建议的解决方案!【参考方案2】:这 2 个链接是您浏览的一个很好的指南。它应该可以帮助您使用 eclipse 设计 Java 代理。
ibm
LekkimWorld
【讨论】:
【参考方案3】:您在 notes 代理中定义了两个主要入口点,但是在 notes 代理的上下文中,只有 NotesMain 会执行。静态 main 方法只会在 notes 代理的上下文之外触发,例如在 Netbeans 或 Eclipse 等 3rd 方 IDE 中运行时。
要让您的代码在 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();
【讨论】:
以上是关于如何使用 Lotus Notes API 从 Java 创建和运行代理的主要内容,如果未能解决你的问题,请参考以下文章