Ошибка RMI в приложении Google - PullRequest
1 голос
/ 17 ноября 2009

Я не получаю сообщение об ошибке при использовании следующей строки

    FileItemIterator it = servletFileUpload.getItemIterator(request);

Я понимаю, когда использую следующую строку

    List fileItemsList = servletFileUpload.parseRequest(request);

Чем они отличаются и как rmi связан с servletFileUpload.parseRequest (request);?

Ошибка: Вызвано:

java.lang.NoClassDefFoundError: java.rmi.server.UID is a restricted class. Please see the Google  App Engine developer's guide for more details.
    at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
    at org.apache.commons.fileupload.disk.DiskFileItem.(DiskFileItem.java:103)
    at org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)
    at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)
    at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
    at morefile.CopyOfUploadApp.doPost(CopyOfUploadApp.java:147)

Контекст: Приложение для загрузки файлов с использованием Apache commons lib в приложениях Google.

Ответы [ 2 ]

3 голосов
/ 17 ноября 2009

Commons FileUpload (1.2.1) только частично совместим с GAE. Поддерживается только потоковый API, но не традиционный API, поскольку локальная файловая система недоступна GAE. В стеке я вижу использование DiskFileItem, который в основном записывает загруженный файл локально и удаляет его позже.

См. Раздел Apache Commons FileUpload по адресу GAE и поддержка фреймворков Java

Вот использование потокового API.

2 голосов
/ 17 ноября 2009

Класс DiskFileItem из библиотеки Commons FileUpload использует внутренний java.rmi.server.UID, и использование этого класса запрещено средой выполнения Служб Google. Поскольку DiskFileItem кэширует загруженный файл в файловой системе сервера, а доступ к диску в любом случае запрещен Службами Google, устранение зависимости от конкретного класса UID RMI не решит вашу проблему.

...