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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тестирование апплета в браузере, Браузер "помнит" апплет до изменений 
:(
    Опции темы
lihusha
Дата 1.7.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте . Подскажите, кто знает , как бороться с кэшированием апплета в Opera ? 
Делаю изменения в апплете , а в браузере -- без изменений . 
После удаления личных данных и закрытия - отрытия браузера - все нормально.
Нельзя ли подгружать новую версию апплета в Opera более простым способом.


С Mozilla и IE -- все нормально.

Это сообщение отредактировал(а) lihusha - 1.7.2009, 16:30
PM MAIL   Вверх
LSD
Дата 1.7.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Ctrl+F5 не помогает?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
lihusha
Дата 1.7.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(LSD @ 1.7.2009,  16:44)
Ctrl+F5 не помогает?

имеется в виду в браузере ?
нет , не помогает
PM MAIL   Вверх
COVD
Дата 3.7.2009, 05:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Что такое "личные данные"? Обновление кеша должно происходить так (при классическом описании апплета тагом applet) - браузер шлет запрос на сервер и получает время создания (версию) файла аплета (обычно это jar). Если версия отличается от имеющейся в кеше, то файл загружается и кеш обновляется. У меня было предположение, что иногда новая версия не запускается из-за ошибок в апплете и тогда запускается старая версия из кеша. После исправления ошибок (перекомпиляции) новая версия принималась. Но были также и случаи, что новая исправная версия не принималась некоторыми клиентами и им помогало очищение локального кеша (в панели java-plugin: ControlPanel->Java->General-> TemporaryInternetFiles). Для полного избавления от проблемы мы просто переименовывали jar файл, добавляя к его имени номер версии (соответственно надо редактировать html). Хлопотно, но надежно. 

А искать причину, почему именно в какой-то Опере что-то не срабатывает - тухлое дело. Пока разберетесь, выйдут новые версии и в Опере будет срабатывать, но не будет срабатывать в Оперетте. Хотя java-plugin и улучшен в последних версиях java (но и новых багов наверное добавили как водится), все же смешивать коктейль из технологий (html, апплет) лучше избегать. На мой взгляд. Надежнее что-то одно. Или html интерфейс, или java (например, WebStart).   
PM MAIL   Вверх
lihusha
Дата 3.7.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо , COVD, это действетельно надежный способ.
Цитата

все же смешивать коктейль из технологий (html, апплет) лучше избегать.


Что Вы имеете в виду ?
Вообще не использовать  апплеты ?

У Вас случайно не завалялась ссылка на туториал по WebStart для начинающих ?


Это сообщение отредактировал(а) lihusha - 3.7.2009, 12:25
PM MAIL   Вверх
COVD
Дата 3.7.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

Что Вы имеете в виду ?
Вообще не использовать  апплеты ?


Если значительная часть функциональности приложения приходится на апплет, то лучше перейти полностью на java WebStart. Наоборот, если апплет служит лишь небольшой добавкой к html интерфейсу (календарь какой-нибудь), то может быть лучше попытаться сделать то же самое на javascript. 

Однако Sun предприняло усилия по продвижению java в интернет и сейчас у апплетов уже нет былых ограничений по памяти и влияние браузера уменьшено, т.е. апплеты приблизились к возможностям WebStart приложения. Как на самом деле я не знаю, потому что мы давно отказались от апплетов в пользу WebStart. 

Кроме того, недавно появилась технология JavaFX, которая базируется на WebStart и работает в том числе и в браузере как часть html интерфейса. Это тоже альтернатива апплетам - http://javafx.com/samples/.

Цитата

У Вас случайно не завалялась ссылка на туториал по WebStart для начинающих ?


http://java.sun.com/docs/books/tutorial/de...tart/index.html





Это сообщение отредактировал(а) COVD - 3.7.2009, 18:42
PM MAIL   Вверх
lihusha
Дата 3.7.2009, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Весьма признателен Вам за информацию.

Добавлено через 14 минут и 30 секунд
Общая информация.
В моем случае в работе клиент-серверного приложения возникает исключение (повторюсь , только в опере).
Вот часть стектрейса данного исключения.

Код

at com.opera.URLConnection.getInputStream(URLConnection.java:125)


импорта com.opera.URLConnection и близко нет в моем исходнике...


Исключение возникло в сточке 

Код

//connection -- HttpURLConnection;
InputStreamReader reader = new InputStreamReader(connection.getInputStream(),"UTF-8");


Так, апплет должен соединиться с сервером, но тут вмешивается браузер опера и подставляет какие-то свои данные.

PM MAIL   Вверх
COVD
Дата 3.7.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Что сообщает исключение?
PM MAIL   Вверх
lihusha
Дата 3.7.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



exception.getMessage() = имя сервера

Это сообщение отредактировал(а) lihusha - 3.7.2009, 23:57
PM MAIL   Вверх
COVD
Дата 4.7.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

exception.getMessage() = имя сервера

 smile 

Если это действительно проблема в Опере и люди с этим сталкивались, то поиск в интернете по тексту исключения даст ссылки на обсуждения. Также возможно это ваша неточность в применении HttpURLConnection - другие браузеры "прощают", а Опера - нет? Приведите код. 
Можно также посмотреть, что браузер отправляет-принимает с сервера для разных типов браузеров. Для этого надо установить анализатор сетевого трафика. Например, бесплатный http://www.wireshark.org/ .   
PM MAIL   Вверх
lihusha
Дата 4.7.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Часть кода метода , использующего HttpURLConnection

Код

//String serverUrl = "адрес сервера";
URL server = new URL(getCodeBase(),serverURL);
HttpURLConnection connection = (HttpURLConnection) server.openConnection();
connection.setDoOutput(true);

String time = "someData";
String data = URLEncoder.encode("mode", "UTF-8") + "=" + URLEncoder.encode("update", "UTF-8");
data += "&" + URLEncoder.encode("time", "UTF-8") + "=" + URLEncoder.encode(time, "UTF-8");

OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(),"UTF-8");

writer.write(data);
writer.flush();
//пробовал закрывать поток и оставлять его открытым
//writer.close();

InputStreamReader reader = new InputStreamReader(connection.getInputStream(),"UTF-8");
int read = 0;
String encodeMessages = "";
for (; (read = reader.read()) != -1;)
{
     encodeMessages += (char) read;
}
reader.close();
String decodeMessages = URLDecoder.decode(encodeMessages, "UTF-8");


PM MAIL   Вверх
COVD
Дата 4.7.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



У вас ведь POST, а по умолчанию GET. Поэтому надо явно указать 
Код

connection.setRequestMethod("POST");

PM MAIL   Вверх
lihusha
Дата 4.7.2009, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(COVD @  4.7.2009,  16:55 Найти цитируемый пост)
У вас ведь POST, а по умолчанию GET. Поэтому надо явно указать код Java1:connection.setRequestMethod("POST");


не помогло

PM MAIL   Вверх
COVD
Дата 4.7.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вы его в нужном месте поставили? 
Код

URL server = new URL(getCodeBase(),serverURL);
HttpURLConnection connection = (HttpURLConnection) server.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");


Других гипотез у меня нет. Проверьте как-нибудь, отправляются ли данные на сервер. Это происходит в момент когда вы переходите к чтению,т.е. на вызове 
Код

InputStreamReader reader = new InputStreamReader(connection.getInputStream(),"UTF-8");

После этой строки уже ничего писать в данное соединение нельзя, поэтому writer можно перед чтением смело закрывать.

Это сообщение отредактировал(а) COVD - 4.7.2009, 19:24
PM MAIL   Вверх
lihusha
Дата 4.7.2009, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(COVD @  4.7.2009,  19:20 Найти цитируемый пост)
Вы его в нужном месте поставили? 


Да , именно здесь.

Цитата(COVD @  4.7.2009,  19:20 Найти цитируемый пост)
Проверьте как-нибудь, отправляются ли данные на сервер.


Проверил , данные не отправляются.
Но -- не отправляются , опять же , именно в опере.







Это сообщение отредактировал(а) lihusha - 4.7.2009, 19:53
PM MAIL   Вверх
COVD
Дата 5.7.2009, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



lihusha . Поздравляю! Вы не одиноки в вашей беде. С Оперой мучается и другие: 

Java Applet Development - Passing values from applet using POST method to PHP page - 

Цитата

applet works fine in firefox, ie and netscape navigator
when running on opera, POST arguments are not send.. i don`t know why.. :(


Коммерческий сайт предлагает решение java applet in Opera not sending POST values, но там надо подписаться на 30 дней trial c кредитной карточкой. И еще не известно, что они насоветуют.

Как я понял, Опера не использует java-plugin (как остальные "лохи"), а идет каким-то своим путем. Поэтому, наверное, в исключениях у вас и всплыло это com.opera.URLConnection. 

В общем, вам удачи в поиске решения. А я еще раз убедился как же правильно мы сделали, что полностью избавились от творчества разных энтузиастов браузеростроения.



PM MAIL   Вверх
lihusha
Дата 5.7.2009, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(COVD @  5.7.2009,  02:53 Найти цитируемый пост)
А я еще раз убедился как же правильно мы сделали, что полностью избавились от творчества разных энтузиастов браузеростроения.


Можно поподробнее -- что Вы имеете в виду ?

PM MAIL   Вверх
COVD
Дата 5.7.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



у нас почти 100% интерфейса приходилось на апплет и мы перешли на вебстарт. Теперь браузер (дефолтный) используется только на старте приложения для загрузки jnlp файла, т.е. минимально.  
PM MAIL   Вверх
lihusha
Дата 5.7.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо Вам за информацию
PM MAIL   Вверх
lihusha
Дата 5.7.2009, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



COVD, а можно ссылки на сайты , где используется web start ?
Я нашел несколько , мне показалось , они (приложения с web start) очень долго грузятся. 
Хотелось увидеть их побольше в действии.

Коково лично Ваше мнение о скорости их загрузки на клиента ?


P.S. Скорость моей линии -- 1 Мб/с
PM MAIL   Вверх
LSD
Дата 6.7.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



На мой взгляд проблема надумана. В реальности апплет будет меняться не часто, гораздо реже чем пользователь будет перезапускать браузер.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
lihusha
Дата 6.7.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(LSD @  6.7.2009,  11:41 Найти цитируемый пост)
На мой взгляд проблема надумана. В реальности апплет будет меняться не часто, гораздо реже чем пользователь будет перезапускать браузер.


Не знаю , правильно ли я Вас понял. Если правильно -- решение данной проблемы и создание топика вызвано необходимостью РАЗРАБОТКИ апплета.
Например , если я меняю фон текстового поля с желтого на зеленый , то хочу сразу же увидеть это изменение при запуске апплета в браузере.

PM MAIL   Вверх
LSD
Дата 6.7.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(lihusha @  6.7.2009,  17:27 Найти цитируемый пост)
Не знаю , правильно ли я Вас понял. Если правильно -- решение данной проблемы и создание топика вызвано необходимостью РАЗРАБОТКИ апплета.

А что мешает вести разработку используя другой браузер, а Оперу использовать только в конце для окончательного тестирования?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
lihusha
Дата 6.7.2009, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(LSD @  6.7.2009,  19:33 Найти цитируемый пост)
А что мешает вести разработку используя другой браузер, а Оперу использовать только в конце для окончательного тестирования?


Уже ничего.
Я понял , что самый эффективный способ -- менять версию в тэге апплета.

Код

<applet
            archive="ChatClient.jar?v=23235"
            .....
/applet>


т.е., если изменить число 23235 , апплет будет подгружен новый.

Но, проблема с потоком все же остается для оперы.

PM MAIL   Вверх
COVD
Дата 7.7.2009, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

На мой взгляд проблема надумана. В реальности апплет будет меняться не часто, гораздо реже чем пользователь будет перезапускать браузер. 

Проблема (по крайней мере, о которой я писал) в том, что дефолтный (простой и удобный) механизм автоматического обновления версии апплета на клиенте иногда дает сбой - на сервере апплет (jar) поменяли, а клиент его не загружает (при перезапуске, конечно). Не только в Опере. Наиболее неприятна эта ситуация в клиент-сервер приложении, когда изменения сделаны и на сервере и на апплете (протокол обмена, например). В этом случае старая версия апплета не будет работать или, что хуже, будет работать некорректно. Конечно, при таком апдейте надо как-то форсировать клиентов обновить версию. Это дополнительные усилия. Субьективно, в WebStart, аналогичный дефолтный механизм работает лучше.  По крайней мере, так было ( сейчас, может, апплеты "подтянулись"?   smile  )

Добавлено через 8 минут и 45 секунд
Цитата

Я нашел несколько , мне показалось , они (приложения с web start) очень долго грузятся. 
Хотелось увидеть их побольше в действии.

Коково лично Ваше мнение о скорости их загрузки на клиента ?


У апплетов и WebStart вроде нет принципиальных различий - время загрузки jar'a приложения зависит от его размера. Если приложение большое, то удобно его разбить на несколько более мелких jar'ов - библиотек. Тогда при обновлениях неизмененные библиотеки перезагружать не придется.
  
PM MAIL   Вверх
LSD
Дата 7.7.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



В свое время видел подобную рекомендацию для внешних JS файлов, но она в полной мере подходит и к апплетам (и Flash, и CSS и т.п.).
Просто добавлять к имени файла timestamp, т.е что-то наподобие того что предложил lihusha, но с некоторыми отличиями.
Код

<applet
            archive="ChatClient-23235.jar"
            .....
</applet>

Разница состоит в том, этот подход требует обязательной согласованности HTML и апплета. С одной стороны дополнительная работа, с другой в случае такого рассогласования мы сразу увидим ошибку.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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