Ошибка приложения книжного магазина CQ5(CRX)
- Я извлек исходный код из http://dev.day.com/docs/en/crx/current/getting_started/first_steps_with_crx.html#Step%20Two:%20Check%20out%20CRX%20Bookstore%20Пример
Когда я пытался вызвать http://:4502/products.html
Фактический результат должен перечислить страницу продуктов из приложения книжного магазина
- Я получил "Не удается обработать запрос к /products.html в /apps/bookstore/components/ranking/ranking.jsp: Какую версию продукта вы используете? В какой операционной системе? Я использую CQ5.5 (CRX 2.3) в Windows 7 http://code.google.com/p/crxzon/issues/detail?id=4&thanks=4&ts=1362987616
2 ответа
Из того, что я вижу, вы получаете NullPointerException в RankingServiceImpl:277
, поскольку repository
поле пустое И единственный способ объяснить это - аннотации SCR не сработали во время сборки.
Сказал, что я на самом деле удивлен, что ваш пакет запущен на CQ 5.5, так как зависимости, похоже, относятся к более ранним версиям (я полагаю, 5.4) - я предлагаю дважды проверить это в /system/console/bundles
(поиск по CRX - образец демо книжного магазина). Если вам не хватает импорта, попробуйте поиграть с /src/impl/com.day.crx.sample.bookshop.bnd
обновить версии, как в CQ 5.5, или запустить его на CQ 5.4.
Аннотации в RankingServiceImpl, по-видимому, относятся к более ранним версиям CQ и CRX. Вот изменения, которые я сделал, чтобы заставить это работать:
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
/**
* Default implementation of the ranking service.
* The ranking is updated through observation (based on OSGi events).
* The service can be used by clients to get the highest ranked products.
*/
@Component(immediate = true)
@Service(value = RankingService.class)
@Property(name = org.osgi.service.event.EventConstants.EVENT_TOPIC, value = SlingConstants.TOPIC_RESOURCE_ADDED)
public class RankingServiceImpl
implements RankingService, EventHandler, Runnable {
private Logger logger = LoggerFactory.getLogger(this.getClass());
// private Logger logger = LoggerFactory.getLogger("RankingServiceImpl");
private static final String PROPERTY_PREV_RANKING = "lowerRankingRef";
private static final String PROPERTY_NEXT_RANKING = "higherRankingRef";
private static final int SHOW_HIGHEST_RANKING = 3;
/** Flag for stopping the background service. */
private volatile boolean running = false;
/** A local queue for handling new orders. */
protected final BlockingQueue<String> orders = new LinkedBlockingQueue<String>();
@Reference
private SlingRepository repository;
@Reference
private ResourceResolverFactory resourceResolverFactory;