![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
SLAER |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
Здравствуйте. У меня стоит задача написать что-то наподобие примитивного файлообменника, используя GWT и RPC-сервисы. Дошел до того, что нужно загрузить файл на сервер. Раньше я писал подобное приложение, где использовал для загрузки метод
сервлета:
Здесь же я использую RPC-сервисы и на серверной стороне создан класс
В нем есть метод doPost, но он финализирован:
поэтому перекрыть я его не могу. Подскажите пожалуйста, как мне из класса LibraryServiceImpl extends RemoteServiceServlet перекрыть метод doPost, принадлежащий HttpServlet'у, чтобы с его помощью мне загружать файл?? Заранее благодарен! Это сообщение отредактировал(а) SLAER - 8.7.2009, 21:01 |
||||||||
|
|||||||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Слушай, я бы попробовал взять исходник вот этого RemoteServiceServlet:
src RemoteServiceServlet Скопировал его в отдельный свой класс, убрал final у метода doPost и от него наследовался бы в твоем LibraryServiceImpl У вдруг где-то еще понадобится такой метод переопределять? Хотя посмотри н его исходник, может лучше другой какой-то метод будет достаточно переопределить? -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
SLAER |
|
||||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
Я создаю новый класс RemoteServiceS , копирую туда этот сервлет:
в итоге idea выдает, что:
не серилиазованы. Как их сериализовать? Убрать их протсо нельзя. doPost, посредством вызова других методов этого класса их использует... |
||||
|
|||||
SLAER |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
у меня уже есть готовый сервлет для загрузки файлов:
может быть можно как-нибудь реализовать вызов его метода doPost из серверной части приложения (из класса LibraryServceImpl)? это было бы предпочтительней, так как под него уже настроено несколько методов в других бинах. Заранее спасибо. Это сообщение отредактировал(а) SLAER - 8.7.2009, 20:55 |
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Смотри, в этом RemoteServiceServlet есть такие интересные методы:
Первые два как раз дают тебе доступ к реквесту и респонзу. а остальные где-то контейнером вызываются, куда ты можешь прикрутить своб логику по обработке FileUpload -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
SLAER |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
я поместил сервлет FileUploadServlet в класс LibraryServiceImpl. Вроде бы ошибок idea не выдала. но теперь встает другой вопрос: как вызвать метод doPost этого сервлета с клиентской части? Раньше вызывал его с JSP-страницы так:
если в кратце, то что вешать на обработчик клика по кнопке загрузки. Заранее благодарен. Не судите строго, я новичок ![]() Это сообщение отредактировал(а) SLAER - 9.7.2009, 08:29 |
|||
|
||||
SLAER |
|
||||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
создаю на стороне сервера еще 1 метод, посредством которого пытаюсь вызвать doPost:
в результате пишет, что rq и rp не инициализированы. При попытке инициализации:
пишет, что они абстрактные и не могут быть инициализированы. Как его вызвать? |
||||
|
|||||
MisterCleric |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
В корне не верно: такие объекты как реквест и респонз создаются контейнером и "жизнь" ихняя тоже происходит под управлением контейнера.
Я же показал, как из парент-класса RemoteServiceServlet получить и то и другое.... -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||
|
|||||
SLAER |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
я получаю реквест и респонз, но вызов метода doPost требует throws IOException,ServletException. Если я объявляю метод на сервере так:
и соответственно в интерфейсе описываю его:
То при компиляции ошибок не выдает, а при запуске страница не грузится, и ругается на:
При этом шелл выдает такие ошибки: [TRACE] Finding entry point classes [ERROR] Unable to find type 'our.sample.client.Library' [ERROR] Hint: Previous compiler errors may have made this type unavailable [ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly может быть где-то указать, что будет метод с throws IOException,ServletException? |
||||||
|
|||||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
необязательно помечать метод как throws.
Ты можешь обернуть вызов в try...catch. -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
SLAER |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
я понял в чем проблема:
имеется сервис:
и когда я пытаюсь вызвать doPost в методе CalldoPost(), он вызывает doPost из RemoteServiceServlet, а мне нужно, чтобы вызывал из FileUploadServlet. Как это можно сделать? |
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
1. В методе void CalldoPost() получаешь реквест и респонз из RemoteServiceServlet
2. Выносишь логику из FileUploadServlet в LibraryServiceImpl 3. Накладываешь эту логику на полученные реквест и респонз -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
SLAER |
|
||||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
решил делать по другому. инициализировал виджет для загрузки:
пытаюсь замапить на FileUploadservlet, который лежит в той же папке, что и клиентская часть. MyGrid.gwt.xml::
почему-то не находит страницу. Что я делаю не так? Присоединённый файл ( Кол-во скачиваний: 7 ) ![]() |
||||
|
|||||
SLAER |
|
||||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
возникла такая проблема: выполняю метод doPost:
на строчке:
вылетает с ошибкой (см. рисунок). Может быть знаете что это может быть? Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
||||
|
|||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Там на скрине написано в переводе на русский: полный стэк-трейс вы может посмотреть в логах ТомКат.
Короче, давай полный стек-трейс. А вообще там явно написано, что NoSuchMethod. Колупай, кого это ты вызываешь, у которого нету такого метода -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
SLAER |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
ошибка возникает из-за того, что я использую GWT-виджет FormPanel внутри GXT-виджета FormPanel. Использую GWT так как у GXT-виджета нету свойства onAction и onMetod, необходимые для маппинга на мой сервлет. может быть знаете выход из этой ситуации?
|
|||
|
||||
Atum |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
В данный момент решаю аналогичную задачу !
что получается Если вы берете GWT то просто следуете примеру описанному тут GWT file upload если используете чистое GXT то когда создаете то идете по аналогичному пути : Сервлет точно такой же как и в примере выше ... ничего не меняем .. грузить файлы через
скорее всего не получиться - так как там метода doPost final . На что следует обратить внимание при таком подходе ( года вы работаете с чистым GXT ) - это : Указать ему путь
у FileUploadField есть ряд недостатков .. - кнопку submit просто обернули красивыми стилями - при этом окно загрузки файла будет вызываться даже если кнопка не доступна или , вызов окна происходит даже если вы промахнетесь мимо кнопки и кликните рядом (место между текстовым полем и кнопкой) Вопрос для Всех кто пользуется GXT загрузчиком вместо GWT как понять что контент загрузился ? в GWT для этого есть onSubmitComplete! а что есть в GXT у её FormPanel? Подскажите!!!
|
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |