Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Transform большого xml и отправка его параметром 
:(
    Опции темы
4epT
Дата 24.1.2012, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Всем привет! В общем такая ситуация, из Java Applet я генерирую xml файл, после чего передаю его в jsp и отправляю нужному сервлету через hidden поле. На маленьких xml все идеально работает.

В апплете есть возможность сделать attachment (любое кол-во), он просто преобразует массив байт в BASE64 и запихнет в xml отдельным тегом. Когда пытаешься пропихнуть файл больше чем 2 метра, валится на transform:

Код

     public String getStringFromDocument(Document doc)
    {
        try
        {
           DOMSource domSource = new DOMSource(doc);
           StringWriter writer = new StringWriter();
           StreamResult result = new StreamResult(writer);
           TransformerFactory tf = TransformerFactory.newInstance();
           Transformer transformer = tf.newTransformer();
           transformer.transform(domSource, result);
           return writer.toString();
        }
        catch(TransformerException ex)
        {
           ex.printStackTrace();
           return null;
        }
    }
 

Исключение:

Код

java.lang.OutOfMemoryError: Java heap space 


На файлах менее 2 метров, трансформ делается нормально, но при отправке данных в сервлет происходит ошибка, что за ошибка сказать не могу, он начинает отправлять и просто падает соединение и все. Через дебаг до сервлета даже не доходит.

Собственно 2 вопроса, можно как то добавить памяти JVM на машине клиента (так как апплет) ? И как решить проблему с отправкой большого hidden поля сервлету ?
PM MAIL   Вверх
COVD
Дата 24.1.2012, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



http://docs.oracle.com/javase/6/docs/techn...deployment.html

Код

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="java_arguments" value="-Xmx128m">
</APPLET>


Разве обязательно отправлять методом Post в виде имя = значение? Если отослать только "значение", то и кодировать хмл не нужно. А в сервлете читать строки из InputStream и самостоятельно их разбирать. Таким образом вы не решите "проблему с отправкой большого hidden поля", а избежите ее. 

Это сообщение отредактировал(а) COVD - 24.1.2012, 14:41
PM MAIL   Вверх
4epT
Дата 24.1.2012, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Ну мне кажется что обязательно ... как сделать по другому, я не знаю. И мне это решение кажется вполне логичным.

А как отослать только значение ? И как потом его в сервете вычитать ? Можно пример ?))

За пример с апплетом спасибо) попробую.
PM MAIL   Вверх
COVD
Дата 24.1.2012, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

Ну мне кажется что обязательно ... 

Это в хтмл - там форма с полями. А средствами java вы можете послать методом пост что угодно. Используя OutputStream. А в сервлете соответственно из request получить InputStream и из него читать и интерпретировать как вам надо. Примеров под рукой пока нет.
PM MAIL   Вверх
4epT
Дата 24.1.2012, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Вы имеете ввиду что я мне нужно прям из апплета дернуть мой сервлет по http ? 

Мне нужно из всех моих апплетов отдавать не только xml, но и другие параметры .. они не большие.
PM MAIL   Вверх
COVD
Дата 24.1.2012, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

Вы имеете ввиду что я мне нужно прям из апплета дернуть мой сервлет по http ?

Да, я об этом. А вы отсылаете из html? Наверное, javascript тоже умеет писать в поток. Или отсылайте вместо одного большого несколько маленьких хмл.
PM MAIL   Вверх
4epT
Дата 24.1.2012, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Я при помощи jQuery добавляю в html form с нужным мне action, и вставляю в тело формы hidden поля, а потом опять же при помощи jQuery делаю submit у формы =)

Примерно вот так:

Код

                    function callRedirect(path, xml, serialNumber){
                        var str = "<form action='" + path + "' method='POST'><input type='hidden' name='xml' value='" + xml + "' />" +
                                    "<input type='hidden' name='serial' value='" + serialNumber + "' />" +
                                    "<input type='submit' id='sendButton' /> </form>";


                        $("#redirect").append(str);

                        $("#sendButton").click()
                    }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.