【问题标题】:Access a local IBM Notes application with default system browser使用默认系统浏览器访问本地 IBM Notes 应用程序
【发布时间】:2015-02-17 13:56:14
【问题描述】:

我正在使用来自 IBM Lotus Notes 技术的 Xpages 框架开发 Web 应用程序。

我的用户不使用嵌入式 Notes 客户端浏览器,而是使用常规的现代浏览器(Firefox、Chrome)来浏览 Notes 应用程序。

当用户有互联网连接时一切正常,他可以通过他喜欢的浏览器访问在线服务器上的应用程序。

但是我的一些应用程序需要在本地离线使用。当用户在本地工作时,他打开 IBM Notes 客户端,转到他的工作区并单击以在本地打开应用程序。然后,Notes 客户端在随机端口上运行一个 http 服务器,并使用嵌入式 Notes 客户端浏览器打开应用程序。

我想要实现的是能够在常规浏览器(Firefox、Chrome)上打开应用程序,只需使用默认系统浏览器而不是嵌入式 Notes 客户端浏览器。

这是我尝试但没有成功的方法:

通过window.location.href,我获得了本地http 服务器运行的端口以及在嵌入式Notes 客户端浏览器中打开的页面的路径。我得到了这样的结果:

127.0.0.1:54428/xsp/Gfn/CoffeShop.nsf/xp_home.xsp?OpenXPage&&xspRunningContext=Notes

所以我只保留有趣的部分:

127.0.0.1:54428/xsp/Gfn/CoffeShop.nsf/xp_home.xsp

现在我需要传递 session id 有这个 http 请求的参数,以便浏览器有权访问应用程序。我得到以下会话 ID:

facesContext.getExternalContext().getRequest().getSession().getId()

由此我得到一个 ID 并构建完整的 http 请求:

127.0.0.1:54428/xsp/Gfn/CoffeShop.nsf/xp_home.xsp?SessionID=ID-fae7aca8f062023972fe35e5909b0106f44ba2ae

但是当我在常规浏览器中尝试此操作时,我得到的不是页面,而是 错误 500。如果我查看服务器的日志,我会看到以下错误消息:

Exception Thrown javax.servlet.ServletException: The request is not coming from a trusted Rich Client part

但我确定我的 ID 是正确的。我试图在互联网上对此进行调查,但目前没有成功,如果有人知道我想念什么,我会很高兴?或者在默认系统浏览器中打开本地应用程序的另一种方式?

谢谢!

【问题讨论】:

  • XPiNC 有什么问题? IMO 你破解它的方式是死路一条。您想要的是“本地预览”,不同的 http 任务,但 AFAIK 它仅适用于已安装的 IBM Designer。
  • XPiNC 是 firefox 的旧版本,它不支持我在应用程序中使用的许多新的 Web 技术(例如 HTML5)。它也比较慢。我当然可以调整我的代码以使其在 XPiNC 上很好地工作,但与在本地工作时找到使用常规浏览器的解决方案相比,这将更加令人困惑。用户没有设计器,只有客户端,所以预览对我来说不是一个好的解决方案。
  • 我同意,XPiNC 落后了几年。好的应用程序,尤其是那些工作多年的应用程序,不依赖于“花里胡哨”。除非您的目标客户是青少年;-) 我的 2 美分。当然 - 设计师不是一个选项 - 我认为你不能将它用于此目的,不切实际并且违反许可证。

标签: xpages lotus-notes lotus-domino xpages-ssjs


【解决方案1】:

简而言之,你不能。这已被安全限制禁用。

但也许您应该再考虑一下 XPiNC 应用程序:在 9.0.1 中,底层 XULRunner 组件已升级,现在支持 HTML5 和许多“更新”功能。

它匹配 Firefox 10.0.6,以下是 HTML5 测试结果: https://html5test.com/s/555ae51ca555ac7b.html

【讨论】:

    【解决方案2】:

    您可以采取的唯一合理措施是在客户端上安装 Domino 设计器。然后你会得到服务于标准浏览器的 nhttp 任务(你可能会分析 nhttp 需要什么而只安装那部分)。

    这里需要注意的是:本地 nhttp 不支持身份验证。所以你需要绕过它(例如,在本地 NSF 和适当保护的 NSF 之间来回复制数据)。

    您也可以尝试使用approach I tookvert.x(应该与任何Java 容器一起使用,但是您将没有任何XPage,只有原始Domino 数据。

    Danielle 通过 Crossworlds 项目推动了这一点 - 这可能是您所需要的。

    【讨论】:

    • 感谢您的回答,但问题是用户的机器上没有 Designer。此外,他们没有能够在 Designer 中打开数据库的正确访问控制。主要问题是身份验证!关于 vert.x 的方法,我真的不明白它如何满足我的需求。
    • 这就是为什么你可以看看crossworlds - 不需要设计师
    【解决方案3】:

    Stephan 是这样说的:你正在考虑的方式只会让你头疼。

    如果离线容量是必须的,您是否考虑过创建一个纯 Notes-Client 应用程序?那肯定会容易得多。

    【讨论】:

      猜你喜欢
      • 2013-05-12
      • 2022-06-20
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多