我在Domino 10.0 RHEL 7中具有此REST服务XPage:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex" rendered="false">
<xe:restService id="restService" pathInfo="VCard" state="false">
<xe:this.service>
<xe:customRestService contentType="application/json"
serviceBean="net.my.rest.VCardService">
</xe:customRestService>
</xe:this.service>
</xe:restService>
</xp:view>
当我调用REST API时,会立即触发beforePageLoad
和afterPageLoad
事件(我通过在事件中使用print
语句来对此进行检查)。但是,调用该bean总是需要 28秒。这是renderService
中的VCardService
方法:
@Override
public void renderService(CustomService service, RestServiceEngine engine) throws ServiceException {
System.out.println("VCard renderService");
request = engine.getHttpRequest();
response = engine.getHttpResponse();
renderService();
}
在XPage中的afterPageLoad
事件发生后28秒,我将此“ VCard renderService”记录到日志中。是什么原因造成这种延迟?
我想到的一件事:我应该在Faces-config.xml中将VCardService定义为bean吗?我见过的REST API示例没有提及。
更新1:
服务Bean不是托管Bean,因此您无需指定 您faces-config.xml中的所有内容。
https://www.wissel.net/blog/2014/10/custom-rest-service-in-xpages-using-a-service-bean.html
更新2:
我使用非常简单的,基本上为空的服务类进行了测试,并且没有延迟。 vCard服务正在使用NSF Code / Jars部分中存储的大约10个主要与JSON相关的JAR。每次调用bean似乎花费大量时间来加载那些JAR。接下来,我将尝试将NSF的ODS从43升级到53,如果这样做没有帮助,则将JAR放置到服务器文件夹中。
更新3:
ODS升级到53(R10),但没有帮助。第一次使用API后,这种缓慢现象消失了几个小时,这是典型的XPage行为。
更新4:
从NSF中删除了JAR,并将它们放在服务器的/ lib / ext文件夹中。