调用驻留在其他应用程序中的托管 beans

calling managed beans that reside in other application(s)

在 XPage 应用程序中,我需要显示驻留在另一个 XPage 应用程序中的信息。

我习惯使用 Repeat 控件并使用 JavaScript 调用托管 bean 进行数据绑定。

示例:

<xp:repeat value="{#javascript:ArticleController.loadArticles();};> 

我想保留现有应用程序中的代码和逻辑,但在第二个应用程序中调用并显示结果。这可能吗?我应该怎么做?

每个 XPage 在其自己的 JVM 中运行,因此无法直接与应用程序 A 中的应用程序 B 中的托管 bean 进行交互。使用扩展库中的 JSON RPC 服务,您将能够调用 XAgent来自应用程序 B(实际上与 Web 服务相同,但返回 JSON 而不是 XML)。

可能值得重新考虑拆分应用程序逻辑。我过去这样做过,但我现在更喜欢将所有 Web 应用程序逻辑保存在同一个数据库中,因为每个都是一个单独的 JVM:

  • 两个 XPages 应用程序的初始性能受到影响
  • 每个都有单独的作用域,因此不能共享 applicationScope、sessionScope 等
  • 您不仅可以共享托管 beans,还可以共享实用程序代码
  • 这是 Bluemix 的架构方法,保持数据和应用程序分离
  • 您可以通过阻止 URL 访问 NSF 本身来进一步限制对数据的访问

试试这个:

String text = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";        
try {
    response.getWriter().write(text);
    response.getWriter().close();
    return;
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return;
}

您可以使用插件在浏览器中查看 json,例如Firefox 的 JSONView