2013-04-02 2 views
0

В CQ5.5 Как я могу заказать 2 стандартных фильтра HTTP, развернутых как компоненты OSGI?CQ5.5 заказывать стандартные фильтры HTTP, развернутые как компоненты OSGI

Проблема в том, что два фильтра должны запускаться в порядке, в котором FilterA должен запускаться первым, а затем FilterB в последовательности.

Как я могу заказать свои 2 фильтра в последовательности?

Знаете ли вы, есть ли какое-либо свойство OSGI или SCR, с которым я могу заказать фильтр 2, чтобы он работал за другим?

Например:

Фильтр A

@Component 
@Service 
@org.apache.felix.scr.annotations.Properties({ 
@Property(name = "pattern", value = "/.*"), 
@Property(name = Constants.SERVICE_RANKING, intValue = 99999, propertyPrivate = false) 
}) 
public class FilterA implements implements javax.servlet.Filter { 
} 

FilterB 

@Component 
@Service 
@org.apache.felix.scr.annotations.Properties({ 
@Property(name = "pattern", value = "/.*"), 
@Property(name = Constants.SERVICE_RANKING, intValue = 100000, propertyPrivate = false) 
}) 
public class FilterB implements implements javax.servlet.Filter { 
} 

Я хотел бы сначала запустить FilterA, а затем FilterB.

Если я разверну эти фильтры как пакеты OSGI на CQ5.5, я вижу, что FilterB запускается на консоли белой доски HTTP. Я не вижу, чтобы FilterA был даже вызван во время моего запроса запроса CQ5.5.

Спасибо.

+0

Я понял, что могу использовать service.ranking, чтобы заказать фильтры в качестве компонентов OSGI. [Sling service.ranking] [1] [1]: http://sling.apache.org/site/filters.html – Navi

+0

Вы должны опубликовать это как ответ, а затем принять его. –

ответ

2

Проверить Оценка http://sling.apache.org/site/filters.html Оценка услуг - вот что вы ищете. Также обратите внимание, что на sling/cq5 вы можете видеть, какие фильтры активны и их рейтинг, посмотрев/system/console/config и Sling Servlet Filters.

Также см фильтр-сферы и изменения, сделанные для введения областей на основе шаблонов (SLING-1213, SLING-1734)

1

Вам нужно добавить filter.order атрибут к службе:

@Property(name="filter.order",intValue=-2500) 

Чем ниже значение, далее вперед в цепочке будет помещен фильтр.

+1

Из фильтра стропов он документирует _seems_, как если бы это было заменено service.ranking. Свойство [filter.order поддерживается до 2.1.0] и включает в себя (http://sling.apache.org/documentation/the-sling-engine/filters.html#support-in-sling-engine-210). Однако некоторые из фильтров sling все еще используют это свойство, а не service.ranking. Свойство filter.order используется, только если service.ranking отсутствует. См. [SLING-1735] (https://issues.apache.org/jira/browse/SLING-1735) – diffa

+0

Я этого не знал. Спасибо за указатель. – ilikeorangutans

+0

Спасибо, что вы правы. Service.ranking - это правильный способ заказать стандартные фильтры для реализации Apache Felix Http Service Whiteboard – Navi

Смежные вопросы