通过 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或者是表 之间作同步