Включить appengine-api-1.0-sdk.jar при развертывании в GAE.

ОБНОВЛЕНИЕ

Следуя совету, который мне дали, я решил развернуть меньший проект только с классом, вызывающим эту строку:

 _cache = MemcacheServiceFactory.getMemcacheService();

Теперь я получаю эту ошибку:

java.lang.NoClassDefFoundError: com/google/appengine/api/memcache/MemcacheServiceFactory

Я прочитал здесь, что это потому, что мне не хватает appengine-api-1.0-sdk.jar но здесь там написано нет необходимости включать его.

Теперь моя проблема заключается в том, что если я попытаюсь включить его в развертывание, добавив в каталог WEB-INF\lib, он будет проигнорирован. Если я попытаюсь использовать другой jar (не связанный с GAE ) он прекрасно развертывается.

Например, обе эти версии имели appengine-api-1.0-sdk.jar в \lib, но версия 5 также имела другую банку (bcprov-jdk15on-147.jar). Разница в размерах между этими двумя из-за этого. введите здесь описание изображения

Подводя итог, мой вопрос: следует ли развертывать appengine-api-1.0-sdk.jar? И если да, то как мне избежать игнорирования?

Ссылка на файл .rar с проектом.

Зависимости проекта, они являются зависимостями по умолчанию для веб-приложения, которое будет развернуто в GAE из NetBeans.

введите здесь описание изображения


Я пытаюсь внедрить Memcache, чтобы использовать тот, который предоставляется GAE, при развертывании приложения.

После его развертывания, когда я пытаюсь запустить его, я получаю IllegalStateException:

java.lang.IllegalStateException: Committed

Это происходит в этой строке:

private MemcacheService _cache=MemcacheServiceFactory.getMemcacheService();

Что я могу сделать, чтобы это исправить?


person moondaisy    schedule 12.09.2016    source источник
comment
Вы уверены, что виновата та строка кода (MemCacheService), о которой вы думаете? Я не вижу в трассировке стека ничего, что подтверждало бы ваше предположение. Работает ли приложение, если вы закомментируете эту строку/связанную? Исключение составляет Jetty, пытающийся сообщить вам, что ответ уже был зафиксирован и не может сбросить ответ. Javadoc   -  person Sai Pullabhotla    schedule 12.09.2016
comment
@SaiPullabhotla Я добавил System.out.println до и после этой строки кода, а следующая никогда не печатается, а предыдущая печатается. Остальная часть кода использует _cache   -  person moondaisy    schedule 12.09.2016
comment
Возможно, вам стоит попробовать этот пример кода в отдельном сервлете и посмотрите, что произойдет.   -  person Sai Pullabhotla    schedule 12.09.2016
comment
@SaiPullabhotla спасибо за подсказку, я сделал только то, что понял, в чем ошибка, но мне не удалось исправить и ее.   -  person moondaisy    schedule 16.09.2016
comment
Какие именно зависимости у вас есть в вашем проекте?   -  person Sai Pullabhotla    schedule 16.09.2016
comment
@SaiPullabhotla Я только что добавил зависимости к вопросу   -  person moondaisy    schedule 19.09.2016


Ответы (1)


Трассировка стека предполагает, что вы пытаетесь что-то написать или установить в своем HTTP-ответе после того, что вы уже зафиксировали его. Это не связано с использованием вами Memcache.

person Andrei Volgin    schedule 12.09.2016