2014-11-03 28 views
1

我尝试在XPage中运行Java代理。 Agent在beforePageLoad事件中运行以操作当前文档。运行Java代理XPage

<xp:this.beforePageLoad><![CDATA[#{javascript: 
      var agent:NotesAgent =database.getAgent("RedirectGroups") 
      agent.runWithDocumentContext(currentDocument.getDocument()) 
    }]]></xp:this.beforePageLoad> 

对于测试,代理向控制台输出一条简单消息。

如果我在浏览器中运行XPage,我收到一条错误500消息。我在Domino 9服务器上使用Notes 9.01

我需要在XPage的其他事件中运行代理吗?

回答

3

代理必须有

  • 安全选项“运行的Web用户”设置
  • 为目标“无”

由于代理可能与此选项时,它不是好的做法运行在XPage中调用Java代理。在XPage中直接调用/使用Java代码。

+2

安全选择“以网络用户身份运行”是个问题。但我会尝试使用Java Bean而不是Notes代理 – poisonedYouth 2014-11-03 15:27:08

4

那么,你必须意识到的第一件事情是,Java代理运行在与XPage完全不同的环境中。它们在两个独立的JVM中运行。因此,了解您无法从代理访问任何可用于XPage的类/资源也很重要。

要运行处理文档的Java代码,您可以使用例如托管的bean,而不是只具有“传统”Domino Web应用程序的开放/保存阶段,您将在JSF生命周期的6个阶段与数据源进行交互。这是修改XPages应用程序中数据的更好模式。

当您收到错误500时,表示服务器端的某些逻辑失败(例如,在托管的bean或某个SSJS中)。最好的方法是使用openntf.org的XPages LogReader,它会向服务器显示带有错误消息(和堆栈跟踪)的本地文件的内容。

您可以通过许多NotesIn9视频序列找到有关如何在XPages中使用Java的重要信息。

+0

我第二次约翰推荐 – stwissel 2014-11-03 15:35:11

+0

谢谢!我将搜索notesin9视频 – poisonedYouth 2014-11-03 15:46:55