Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.11.2009, 23:01
Deidara вне форума Посмотреть профиль Отправить личное сообщение для Deidara Найти все сообщения от Deidara
  № 1  
Ответить с цитированием
Deidara

Регистрация: May 2009
Сообщений: 80
Question RemoteObject (сборщик мусора), не удаляется экземпляр.

Добрый день.
Использую RemoteObject для работы с классами Java следующим образом:
Код AS3:
package SupportClassesSrc {
	public class RemoteServis{
		private var remoteObject:RemoteObject;
		private var _resultHendler:Function;
		private var _faultHendler:Function;
 
		//Конструктор
public function RemoteServis(destination:String, resultHendler:Function = null, faultHendler:Function = null){	
			_faultHendler = faultHendler;
			_resultHendler = resultHendler;
			remoteObject = new RemoteObject();
			remoteObject.destination = destination;
		}
 
		protected function call(name:String, args:Array = null):void{
			CursorManager.setBusyCursor();
			try{
				var operation:AbstractOperation = remoteObject.getOperation(name);
				operation.addEventListener(ResultEvent.RESULT, onResult);
				operation.addEventListener(FaultEvent.FAULT, onFault);
				operation.send.apply(operation, args);
			}catch(e:Error){
				trace("RemoteServis " +  e.toString());
			}
 
		}
		protected function onResult(e:ResultEvent):void{
			CursorManager.removeBusyCursor();
			if(_resultHendler != null){
				_resultHendler(e.result);		
			}
			remoteObject = null;
		}
		protected function onFault(e:FaultEvent):void{
			CursorManager.removeBusyCursor();
			if(_faultHendler != null){
				_faultHendler(e.fault)		
			}
			remoteObject = null;
		}
 
	}
}
От этого класса наследуются сервисы для обращения к серверу:
Код AS3:
package SupportClassesSrc {
	public class UserServise extends RemoteServis{
		public function UserServise(resultHendler:Function, faultHendler:Function = null){
			super("registration", resultHendler, faultHendler);
		}
		public function getContry():void{
			call("getCountryList");
		}
	}
}
После чего, вызвать метод на сервере можно следующим образом:
Код AS3:
new UserServise(checkMailInBase).getContry();
Всё прекрасно работает, скорость передачи запроса и степень удобности сериализации с Java, которую даёт blazeDS просто не может не радовать, но.
В оперативе сервиса остаются висеть запросы размером от 50 до 100 Кб.
Сервер после каждого обращиения сессию разрывает и закрывает.
Опытным путём было выяснено, что екземпляр класса, создаваемый RemoteObject'ом при обращении к серверу не удаляется (не собрается мусоросборщиком), хотя после получения result или fault RemoteObject'у присваевается null.

Сервер работет с базой через hibernate, может кто ни будь что ни будь подсказать?

Старый 08.11.2009, 00:44
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
RemoteServis (правильнее все таки назвать RemoteService), необходимо сначала подготовить к удалению, удалить слушателей, можно на всякий случай и приватные переменные занулить.

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.