Sling Servlet中的瞬态服务@Reference

时间:2018-01-31 14:02:25

标签: java servlets serialization sling

我在项目中有几个Sling servlet(实现SlingAllMethodsServlet或SlingSafeMethodsServlet),其中一些引用Sling服务:

public class MyServlet extends SlingAllMethodsServlet{
    @Reference
    private SlingSettingsService slingSettingsService;

}

现在,像Sonar这样的静态代码分析器告诉我使变量“slingSettingsService”成为瞬态或Serializable,因为Sling Servlet实现了Serializable:

public class MyServlet extends SlingAllMethodsServlet{
    @Reference
    private transient SlingSettingsService slingSettingsService;
}

作为替代方案,他们告诉我使引用的服务实现Serializable,但这对我来说似乎是不可能的。 将参考瞬态化是一个好主意吗?在哪种情况下,Sling servlet将被序列化和反序列化,并且引用的特征是否会被恢复?

1 个答案:

答案 0 :(得分:1)

它几乎是来自servlet api的包袱。 AFAIK吊索servlet从未被序列化。此外,由于服务对象由scr管理,任何具有服务引用的osgi组件都不太可能在序列化和反序列化中存在。你应该忽略那个声纳规则。