使用 Lotus Notes 和 Eclipse 管理和运行 Java 程序
利用EclipseIDE为LotusNotes/Domino开发Java代理。下载并安装Eclipse,然后 解使用Eclipse创建项目、调试Java、重构代理以及将代理导入DominoDesigner 何等轻松。
Java和LotusNotes/Domino 理想 开发组合。将它们组合 起,可以使Notes/Domino开发 员充分利用其常用开发环境DominoDesigner中目前可用 所 Java代码和包。
Eclipse大概 最好 集成开发环境之 ,它提供 非常丰富 特性,其中包括上下文相关操作、视图、富调试程序(richdebugger)和重构。重构可以将Java代码重新命名、移动、添加和提取到新 方法中,以减轻清除初始编码尝试 工作量,使其简洁易读,并使其成为您要向其他开发 员显示 代码。对许多开发工作来说,重构 Eclipse最好 项功能。
调试LotusNotes/Domino7中 Java代理 能力,现 就可以协调LotusNotes/Domino和Eclipse,为Notes/Domino应用程序创建设计优良 可调试Java代理项目。
进行任何LotusWorkplace开发都需要确实 解Eclipse 如何工作 。LotusNotes/Domino7提供 个现 开始学习Eclipse 极好理由,既将它用于Notes/Domino 些操作,增加将来也可以应用于LotusWorkplace项目 技能。
本文讲述 如何安装Eclipse,如何为LotusNotes/Domino创建项目,以及如何将这个项目导入DominoJava代理中,然后调试该代理。本文还提供 调试这些代理 些技巧和可能遇到 陷阱。
安装EclipseWebSphereStudioApplicationDeveloper 基于Eclipse ,所以如果安装 Eclipse,就可以随同本文 解如何使用WebSphereStudioApplicationDeveloper。如果没 安装Eclipse或WebSphereStudioApplicationDeveloper,那么您需要先获得这两个应用程序。Eclipse可以从Eclipse基础网站免费下载。WebSphereStudioApplicationDeveloper 试用版也能找到。
下载Eclipse或WebSphereStudioApplicationDeveloper。Eclipse很容易安装;Eclipse Web站点上 安装说明。下载 用于Windows zip文件之后,需要运行eclipse.exe文件。WebSphereStudioApplicationDeveloper比较复杂。请参考相应文档,以获得安装说明。
注意:下面 步骤讲述 Eclipse3.0。如果您安装 Eclipse 其他版本,可能会发现用户界面以及步骤 本文中讲述 所 同。
Eclipse和RationalClearCase源代码控制如果要集成Eclipse和RationalClearCase源代码控制系统,可以下载并安装IBMRationalClearCaseSCMadaptersforEclipse2.11。否则,默认源代码控制系统 CVS。
Eclipse中创建新 Java项目安装 Eclipse和所 插件后,现 就可以创建项目,并以此作为Notes/Domino工作 开始。必须 个项目内存储所 Java代码。 工作区中可以 多个项目。 计算机中还可以 多个工作区,可以使用eclipse.exe –data开关来指向 同 工作区。
要创建新 Java项目,需要打开Eclipse,选择File-New-Project。然后 NewProject对话框中选择JavaProject,最后单击Next。
图1.NewProject对话框
输入项目名称,然后单击Finish。创建 项目后,要更改项目属性中 路径,使其指向Notes.jar文件。右击PackageExplorer附签中 项目并选择Properties。 Properties对话框中,选择JavaBuildPath,然后选择Libraries附签。单击AddExternalJARs按钮,导航到Notes.jar文件,以将其添加到类路径中。
图2.Properties对话框
添加 JAR文件之后,可以使用项目中NotesJavaAPI定义 类和接口。DominoDesigneron-linehelp中 关于NotesJavaAPI 文档。
接着,需要下载Sun1.3.1JRE。或者,如果计算机上安装 Domino服务器,可以使用该服务器 JVM。Notes客户机和Domino服务器应该 匹配 ,以确保构建项目所用 JVM 从服务器任务或代理服务器任务调用时代理和程序将运行 JVM相同。
LotusNotes/Domino 当前版本使用 Java1.3.1,所以必须安装该软件以使用正确 版本来构建项目。(LotusNotes/Domino7使用JDK1.4。)虽然许多Java代理和程序都可以编译,而且没什么问题,但可能会陷入另 些问题,比如使用 个JDK版本构建程序,却 另 个版本上运行。如果安装 Eclipse3.0,因为它 基于Java1.4.2 ,所以需要删除JDKSystemLibrary并创建 个新库来指向JDK1.3.1安装。要进行这项操作,需要选中Libraries附签 Properties对话框中 JRESystemLibrary,并单击Remove。
要添加新库,可以单击AddLibrary按钮。 AddLibrary对话框中,选择JRESystemLibrary,然后单击Next。选择AlternativeJRE选项(如果尚未选择)。然后单击InstalledJREs按钮。单击Add并完成AddJRE对话框来添加JDK1.3.1。
图3.AddJRE对话框
保存对项目 更改。
创建第 个Java代理DominoDesigner 开始时会自动为您填充第 个Java代理。 过,Eclipse 会这样,所以它需要创建新类,来实现正确 AgentBase接口,获取Domino会话和agentcontext对象。可以使用DominoDesigner中 代码作为指导。
图4.DominoDesignerJava代理
将骨干Java代码从DominoDesigner直接复制到Eclipse项目中 新类中。 们建议您创建新 包,并于其中存储代理。这将 助于组织项目,并且这符合 般Java设计原则。要创建新 包,可以选择File-New-Package。
图5.NewJavaPackage对话框
们创建名为com.ibm.NotesJava.agents 包,因为 IBM工作,并且这 们 NotesJava项目。 们将 这个包中存储代理。可以看到 其他常见包 com.sun.*、org.apache.*和核心Java语言函数 java.lang.*。至于如何组织包 整套原则,但这 本文讨论范围内,重要 要将代理和代码放 默认包中,因为这个包杂乱且 专业。
现 已经 新包,所以可以创建新 Java类。要 Eclipse中创建新 Java类,可以选择File–New–Class。Eclipse 效率非常高,所以如果已经选择 包,那么Eclipse将填充包名称。可以 这里添加名称和超类 。对于Notes代理,超类必须始终 lotus.domino.AgentBase。 DominoDesigner中,该操作 自动进行 ,但 Eclipse中,必须手工完成这项操作。
图6.NewJavaClass对话框
创建类之后,就可以输入剩余 代理代码,从而使其看起来 DominoDesigner示例中 代理 样。
图7.Eclipse中 JavaAgent
构建代理时,将 包目录中创建JavaAgent.class文件。现 已经 类文件, 们可以将其导入DominoDesigner中 代理中,并 Eclipse中管理代码。 DominoDesigneron-linehelp中,请参阅“ImportJava”主题,以获取更多信息。 将文件导入代理中之后,当调用该代理时,可以运行已经编写 Java代码。现 就可以使用Eclipse调试程序来调试该代码 。
调试Java代码Eclipse封装 Java调试程序,使您能够遍历和更改变量,监视项并 Java代码中添加断点。第 步 调试模式下加载LotusDomino中JVM。这样可以强迫JVM停止,等到附加 调试程序后再继续进行其操作。LotusNotes/Domino6或之后 版本中包含这项功能,要启用该功能,可以添加Notes.ini变量JavaEnableDebug=1,然后重新启动服务器。
下 阶段 服务器上运行代理,并等待服务器冻结代理 执行。 冻结代理 执行之后,JVM将等待调试程序附加到TCP/IP端口9788。
打开Eclipse和项目。选择Run-Debug来打开Debug对话框,然后选择RemoteJavaApplication,单击New创建新 调试会话。最后, Connect附签中,指定服务器 主机名称,如果服务器 所调试 计算机上,则指定本地主机 名称。
图8.Debug对话框
对于高级用户,可以按如下所示改变端口号和调试设置:
JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000
Suspend=n没 冻结服务器来等待调试连接,所以可以错过代理 启动。该调试设置允许您将额外参数传送给服务器中 JVM调试程序。如果您 自己喜欢 设置,也可以 这里使用。
最好 代理代码中已经设置 断点。当 调试模式下使用Eclipse将代码附加到服务器时,它应该会自动断开,并允许您检查变量,设置其他断点,执行需要使用 其他所 调试任务。
其他Eclipse指针现 Eclipse中已经 项目,它提供 DominoDesigner内大型Java项目所没 许多增强开发和组织任务。DominoDesigner适用于较小 Java任务,比如获取或设置多个值或简单 报表。 过, 旦开始将代码分入 同 包、定义接口并将工作委托给其他 ,项目管理会变得更复杂。
Eclipse包含用于协同工作 内置工具,其中包括CVS源代码控制集成。RationalClearCase源代码控制插件允许您附加到ClearCase中存储 Eclipse项目中。它提供 自动或即时 代码检入和检出、简洁 修饰符,从而可以轻松地标识源代码控件中 对象及其状态。
Eclipse中另 项非常 用 功能 可以重构项目。例如,可以选择代码 部分并将其移至它自己 方法中。如果您 个非常长 方法,想将其分入较小 步骤中,那么可以将这项操作自动化,Eclipse能够帮助您实现该自动化。下列代码片断 个重构示例:
InitialfunctionpublicvoidNotesMain(){try{Sessionsession=getSession();AgentContextagentContext=session.getAgentContext();Databasedb;//Iamrunningthis,usetheserver-oritcanassumeitislocalif(session.getUserName().equals("CN=IanConnor/OU=Westford/O=IBM")==true)db=session.getDatabase("support/iris","support/retain.nsf");elsedb=session.getDatabase("","support/retain.nsf");System.out.print(db.getFileName());}catch(Exceptione){e.printStackTrace();}}可以选择要移至其自己 函数 代码部分,然后选择Refactor-ExtractMethod。这将确定需要传送 参数和应该返回 数据。您所需要做 就 选择方法名称。然后可以预览更改,查看要进行 操作。这将 助于您更好地组织代码,使试图 解代码 其他 更容易维护代码。正如所 开发 员都知道 ,包含较短函数 、简洁 、组织良好 代码基数(codebase)要比非常长 、似乎 会结束 1000行函数容易使用得多。
publicvoidNotesMain(){try{Sessionsession=getSession();AgentContextagentContext=session.getAgentContext();Databasedb;db=getRetainDatabase(session);System.out.print(db.getFileName());}catch(Exceptione){e.printStackTrace();}}privateDatabasegetRetainDatabase(Sessionsession)throwsNotesException{Databasedb;//Iamrunningthis,usetheserver-oritcanassumeitislocalif(session.getUserName().equals("CN=IanConnor/OU=Westford/O=IBM")==true)db=session.getDatabase("support/iris","support/retain.nsf");elsedb=session.getDatabase("","support/retain.nsf");returndb;}重构 所 开发工作 基础部分。 们总 愿意立即共享代码 第 个cut。 使用新 API或新 工作方式时更 如此。先 花费大量时间编写 小部分代码,以测试其如何工作,然后当可以运行该代码时,将停下来适当组织代码,使查看该代码 能够看懂。
结束语Eclipse Notes开发 员可以 其当前和将来项目中使用 非常 用 平台。它可以帮助开发 员更好地组织项目, 小组中 其他 共享代码,并更好地利用Java设计技术,如接口和代码分隔。随着LotusWorkplace和LotusNotes/Domino 集成度越来越高,Java和Eclipse将发挥重要 作用。Notes开发 员现 可以凭借自己 合并和群件技能进行构建,同时还要准备应付未来 挑战。
新 产品或工作方式必须具 些重要功能和优点,才能确保 们愿意采用该产品或方式。对于必须提交编写得很好 、提供优质Java代码 应用程序 Notes开发 员来说,Eclipse提供 调试、重构和源代码控制。所 这些 任何重要 开发工作中都 重要 功能,它们将确保 得到 成果相比,您花费时间学习如何使用Eclipse进行Notes开发 非常值得 。
,