“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 在请求结束时被回收,因此其他后端对象也随之回收。
我想在 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 在请求结束时被回收,因此其他后端对象也随之回收。