如何在Apache Sling中的HTTP请求或包生命周期阶段处理事务

时间:2011-11-22 01:59:25

标签: transactions jackrabbit jcr sling

根据JCR规范,我知道我可以请求UserTransaction对象(在JTA中指定)并在当前会话期间创建begin / commit / rollback序列。可能有问题的是我是否可以在Sling做类似的事情?例如,当用户请求解析为我的servlet的url或在我的bundle启动期间。

我可以访问JCR存储库,但是当资源被关注时,事务机制是否可以正常运行(可能不是JCR支持的......)?

Sling / JCR / Jackrabbit如何同时进行“交易控制”会话而不是“交易控制”?如果出现问题,这种行为会给存储库带来一些不一致吗?

1 个答案:

答案 0 :(得分:1)

你真的需要交易吗? JCR会话的瞬态空间很适合作为轻量级事务机制,如果在不调用save()的情况下关闭会话,则所有更改都将被丢弃。通常的模式是在处理请求的servlet或脚本中执行操作,并且仅在所述内容成功时保存。

另一方面,Sling提供对底层JCR会话的完全访问权限,因此您应该能够做任何合适的事情。如果没有,最好是询问Sling用户列表,请参阅http://sling.apache.org/site/project-information.html#ProjectInformation-lists