“DAS - Domino REST 服务”和 Spring 集成。这是真的吗?

‘DAS - Domino REST service’ and Spring integration. Is it real?

我想在 domino 上构建自己的 REST 服务。我试过来自 ExtLib github 来源的示例 - “DAS - Domino REST 服务” - com.ibm.domino.services.sample.

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Create_your_own_Domino_REST_service_using_DAS

我还没有找到如何将我自己的上下文注入资源的方法。我的上下文与几个 NotesDatabases 有连接,可能会有其他对象,我不想在每次处理 HTTP 请求时都初始化这些对象。

事实上,我使用 Spring AppContext 来存储我的上下文对象和我需要的其他 bean。

所以问题是是否有可能将一些对象(最好是 Spring AppContext)注入到资源对象中。

我在找这样的东西:

SampleService.java

package com.ibm.domino.services.sample.resources;
...
public class SampleService extends RestService {

>> private ApplicationContext ctx = new ClassPathXmlApplicationContext(...);


public Set<Class<?>> getClasses() {
    Set<Class<?>> classes = new HashSet<Class<?>>();
    SAMPLE_SERVICE_LOGGER.getLogger().fine("Adding sample service resources."); // $NON-NLS-1$
    classes.add(RootResource.class);
    classes.add(ContactsListResource.class);

    return classes;
}
...

RootResource.java

package com.ibm.domino.services.sample.resources;
...
@Path("sample") // $NON-NLS-1$
public class RootResource {

>> @Inject / @Autowired
>> private ApplicationContext ctx;

/**
 * Gets links.
 * 
 * @param uriInfo
 * @return
 */
@GET
public Response getLinks(@Context UriInfo uriInfo) {
...

我是 REST 的初学者。可能我走错方向了。

如果有任何想法,我将不胜感激...

REST API 通常是无状态的。在 DAS 中,每个请求都会获得 lotus.domino.Session 的一个新实例。即使两个请求被同一个用户认证,它们也会得到不同的 Session 对象。

当然有一些方法可以将状态注入到您的实现中。例如,如果您尝试在请求之间存储每个用户的状态,您可以创建一个对象的静态映射,其中键是唯一的用户 ID。但是,您将负责管理缓存。例如,您可能希望偶尔删除不活跃用户的条目。 DAS 对此没有帮助。

此外,您不希望在请求之间保留任何 Notes 后端对象。数据库、视图、文档等的实例都与会话相关联。通常 Session 在请求结束时被回收,因此其他后端对象也随之回收。