通过 REST 在两个不同服务器上的两个数据库之间接收数据

Posted

技术标签:

【中文标题】通过 REST 在两个不同服务器上的两个数据库之间接收数据【英文标题】:Receive data via REST between two databases on two different servers 【发布时间】:2016-01-21 12:20:32 【问题描述】:

我在一台服务器上有一个 Lotus DB (db1),在另一台服务器上有第二个 Lotus db (db2)。 如何通过 REST 服务从 db1 接收数据到 db2(在 db1 中配置 REST 以从 db1 中的视图接收数据)? 我认为任务必须明确,但我找不到这个任务的简单解决方案:(

【问题讨论】:

当您在 2 台 IBM Domino 服务器上拥有基于 NSF 的数据库时,REST 可能是移动数据效率最低的方式。如果它们应该具有相同的内容(或子集),请使用复制。它为您处理所有错误情况。 NRPC 和本地方法是另一种选择。让您免于来回转换数据类型 【参考方案1】:

在服务器和数据库路径之间使用 REST 服务的属性 databaseName!!

<xe:restService id="restService2" pathInfo=...>
    <xe:this.service>
        <xe:viewItemFileService 
            databaseName="Server01!!Test/db1.nsf"
            viewName="viewInDb1"
            ...>
        </xe:viewItemFileService>
    </xe:this.service>
</xe:restService>

【讨论】:

非常感谢!这对我有帮助。 还有一个问题:如果我没有使用 REST 服务的 Lotus Base - 我如何从中接收数据?通过道场?【参考方案2】:

你可以调用网址:

 var host = facesContext.getExternalContext().getRequest().getHeader("Host");
var path = facesContext.getExternalContext().getRequest().getContextPath();
var page = "/RESTServiceProvider.xsp/hotSheets?rName=AarionPerez";

var url = "http://" + host + path + page;
var url:java.net.URL = new java.net.URL(url);
var urlconn:java.net.URLConnection = url.openConnection();
var reader:java.io.BufferedReader = new java.io.BufferedReader(new java.io.InputStreamReader(urlconn.getInputStream()));
var inputLine;
var inJson = "";
    while ((inputLine = reader.readLine()) != null)
        inJson += inputLine;
    
    reader.close();

这是来自 NSF 的调用,但您可以输入非 NSF URL 并获得响应。您可能还需要通过身份验证。

【讨论】:

我建议使用 Apache HTTP 客户端 - 处理状态码、长响应等

以上是关于通过 REST 在两个不同服务器上的两个数据库之间接收数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在heroku上的两个不同应用程序之间共享worker?

怎么在一个 mysql 服务的两个不同数据库 database或者是表 之间作同步

如何在不同机器上的两个电子应用之间进行交互

在 nfs 服务器上的两个目录之间复制

在 SKSpriteNode 上的两个不同 SKTexture 之间淡入淡出

如何在同一分支上的两个不同提交之间区分同一文件?