多亏了HttpService,我正在开发servlet并将它们注册到我的OSGI容器中。我的目标是保护在我的OSGI容器中注册的所有servlet。我看到我可以用自己的handleSecurity方法实现向HttpContext注册我的Servlet来处理我的安全性。
但我考虑的是捆绑包使用缺省HttpContext注册servlet的情况(with表示没有安全性)。
所以我的问题是,有没有办法一劳永逸地强制我的OSGI容器中部署的所有servlet的安全性?
发布于 2012-09-21 15:03:49
我将使用Service hook特性(OSGI4.3)来覆盖HttpService.registerServlet的行为。在我的钩子中,我将强制使用我的HttContext实现。
使用此解决方案,我的HttpContext实现将保护任何向HttpService注册servlet的捆绑包。
发布于 2012-09-20 21:10:20
简短的回答是不支持使用HttpService。
更长的答案是,如果你使用OSGi规范还没有提供的whiteboard-extender,你可能会得到类似这样的结果,但是felix和pax-web确实提供了它。在使用白板扩展器时,您可以结合对HttpContext的引用(as属性)注册您的servlet。当然,这个HttpContext也需要是一个“定制”的,但您只需要注册一次,就可以从您的Servlets中引用它。这可能是你最接近你的问题了。
发布于 2013-09-19 14:41:11
如果您使用Apache Felix白板扩展器,您可以注册一个Servlet过滤器,这是一种更好的处理安全性的方法,因为它很容易支持不同的策略。其目的是在Http服务的下一次更新中支持过滤器和白板:https://github.com/osgi/design/tree/master/rfcs/rfc0189
您可以按照建议使用钩子,但请不要这样做。钩子是为深度中间件设计的,而不是面向应用程序的方面。它们产生了开始/停止排序的问题,它们使系统对调试工具更加不透明,简而言之,它们使您的系统更加复杂。如果您开始将钩子用于这些目的,您将发现更多的用例,它们将开始交互。远离它们,除非是非常核心的系统中间件。
https://stackoverflow.com/questions/12490644
复制相似问题