Я обнаружил, что Sling может связывать сервлеты с определенными типами ресурсов, селекторами и расширениями, методами. действительно полезно при разработке компонентов.
Теперь я начинаю изучать ComponentFilterChain и хочу создать фильтры, которые регистрируются только для определенных типов ресурсов, точно так же, как сервлеты выше.
Из Примеры фильтров в проекте Sling, я вижу, что есть свойство pattern
, которое вы можете применить для определенных путей, хотя кажется, что это ограничивает преимущества наличия компонентов .
На самом деле я ищу свойство, эквивалентное sling.servlet.resourceType
, с помощью которого я могу аннотировать свой фильтр, чтобы только определенные компоненты входили в этот фильтр как часть цепочки фильтров компонентов, вместо того, чтобы проверять компонент resourceType
/ superResourceType
в фильтре.
Возможно ли это с фильтрами Sling? Или можно использовать эквивалентный подход?
2 ответа
По умолчанию нет способа связать фильтры сервлетов с типами ресурсов Sling. Составление служб OSGi, возможно, с использованием значений sling: resourceType, установленных в качестве свойств службы, должно позволить вам предоставлять аналогичные функции.
Начиная с Apache Sling 2.6.14, есть возможность связать фильтры Sling с типами ресурсов.
Для этого вам нужно добавить в службу OSGi свойство sling.filter.resourceTypes
.
Доступен набор аннотаций, упрощающих работу. .
//...
import org.apache.sling.servlets.annotations.SlingServletFilter;
import org.apache.sling.servlets.annotations.SlingServletFilterScope;
import org.osgi.service.component.annotations.Component;
@Component
@SlingServletFilter(scope = {SlingServletFilterScope.REQUEST},
suffix_pattern = "/suffix/foo",
resourceTypes = {"foo/bar"},
pattern = "/content/.*",
extensions = {"txt","json"},
selectors = {"foo","bar"},
methods = {"GET","HEAD"})
public class FooBarFilter implements Filter {
// ... implementation
}
Похожие вопросы
Новые вопросы
osgi
Платформа OSGi (Open Service Gateway Initiative) - это модульная система и сервисная платформа для языка программирования Java, которая реализует полную и динамическую модель компонентов.
sling:resourceType
фильтру через аннотацию свойства и решение работать с запросом или пропустить его на основе этого из фильтра?clazz, java.lang.String serviceFilter), где serviceFilter - это фильтр, подобный LDAP, который позволяет вам выбирать службы на основе этих свойств.