Блог об it, программировании и интернет-маркетинге

Делюсь наблюдениями и личным опытом в области программирования и интернет-маркетинга

ZK framework Upload Aborted : (contentId is required)

Posted on | February 19, 2014 | No Comments

На фронтенде используется Zk framework, после выкладки на новом сервере при загрузке файлов стала вылезать абсолютно не информативная ошибка Upload Aborted : (contentId is required). Файлы загружались и сохранялись средствами Zk AuUploader. Контейнер сервлетов Catalina, что, как оказалось потом, и сыграло решающую роль. Причем ошибка возникала только на файлах размером > ~200KB.

По логам сайта с DEBUG левелом никакой проблемы не видно, Zk ловит и поглощает исключения, выводя чушь.
Глянул код Zk AuIploader, стало ясно, что придётся рыться дальше :)

if (attrs.get("contentId") == null && alert == null)
//B65-ZK-1724: display more meaningful errormessage
alert = "Upload Aborted : (contentId is required)";

В спецификации Servlets 3.0 указано что в MultipartConfig по умолчанию MaxFileSize и maxRequestSize значение не ограничивается.
В ZK значение max-upload-size по умолчанию 5120KB, что нас вполне устраивает.
В web.xml сайта ограничение тоже не стоит.
Перепроверил дефолтную java.io.tmpdir, все норм.
Дальше я полез проверять сам tomcat:
Сверил по чексуммам tomcat + конфиги на новом сервере и одном из тех, где загрузка работает – все прекрасно, сходится.
В setenv.sh тоже все хорошо, а дальше, уже в catalina.sh я нашел забавную штуку:

if [ -z "$CATALINA_TMPDIR" ] ; then
# Define the java.io.tmpdir to use for Catalina
CATALINA_TMPDIR="$CATALINA_BASE"/temp
fi
....
....
eval exec \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
-Djava.security.manager \
-Djava.security.policy==\"$CATALINA_BASE/conf/catalina.policy\" \
-Dcatalina.base=\"$CATALINA_BASE\" \
-Dcatalina.home=\"$CATALINA_HOME\" \
-Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
org.apache.catalina.startup.Bootstrap "$@" start

Достаточно было создать с соответствующими правами директорию temp в $CATALINA_BASE и все заработало. Возникновение этой ошибки только при файлах с определенного размера связано скорее всего с настройками Zkoss framework, в крайнем случае Tomcat’а, хотя там вроде по умолчанию сохранение файлов во временную директорию производится если размер >10KB.

SEO Community Ваау! News2.ru SMI2 Google Bookmarks I.ua Закладки Yandex Ruspace Web-zakladka Zakladok.net delicious БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong

Comments