Acho q vc precisa passar o domain da application parent para o seu modulo...

... new ApplicationDomain(null) ..

 new ApplicationDomain(Application.applicaiton.currentDomain)


Faz o teste e dá um feedback.



[]'s



Em 15 de fevereiro de 2011 15:48, Arthur Rocha <[email protected]>escreveu:

> Boa tarde pessoal,
> tenho uma aplicação onde utilizo Java, Flex, BlazeDs, Spring,
> Hibernate.
> Hoje na parte flex trabalho bastante com módulos, pois não conhecia a
> opção de se trabalhar com sub-aplicações.
> Vamos então ao problema:
> Estou lendo o livro "Enterprise Development with Flex" e no capítulo 7
> são descritas diferentes formas de se trabalhar com BootStrap (classes
> incializadas antes do contexto da aplicação e então compartilhadas
> entre a aplicação principal e sub-aplicações), porém como a maioria
> das coisas, não funciona "bonitamente" como dito no livro. Estou dando
> um load em minha sub-aplicação no contexto Same Sandbox Different
> Domain (SSDD) com o seguinte código:
>
> private function setLoaderContext():void
> {
>    swfLoader.loaderContext = new LoaderContext(false,
>                                    new ApplicationDomain(null),
> SecurityDomain.currentDomain);
> }
> ]]>
>        </mx:Script>
> <mx:SWFLoader
>                id="swfLoader"
>                initialize="{setLoaderContext()}"
>                loadForCompatibility="true"
>                trustContent="true"
>                width="100%"
>                height="100%"
>                />
>
> A aplicação carrega corretamente, porem quando vou fazer uma chamada a
> um serviço java com RemoteObject os dados (operation, destination)
> estão "null". Estes dados só chegam null para o Blaze quando carrego
> este swf como sub-aplicação, se eu chama-lo normalmente pelo browser
> funciona corretamente.
> Creio que esse erro esteja sendo ocasionado por alguma má
> implementação na minha classe BootStrap (PortalBootstrapLoader
> abaixo).
> Chamo minha aplicação principal pela seguinte URL:
>
> http://localhost:8080/aplicacao/PortalBootstrapLoader.html?app=/aplicacao/index.swf
> e minhas sub-aplicações são carregadas como o seguinte exemplo:
> swfLoader.source = "http://localhost:8080/aplicacao/subApplication/app/
> index.swf";
>
> Utilizo a versão 3.5 do compilador Flex.
>
> Classes BootStrap:
>
> package {
>   import flash.display.Loader;
>   import flash.display.Sprite;
>   import flash.display.StageAlign;
>   import flash.display.StageScaleMode;
>   import flash.events.Event;
>   import flash.net.URLRequest;
>   import flash.system.ApplicationDomain;
>   import flash.system.LoaderContext;
>   import flash.system.SecurityDomain;
>
>   import mx.messaging.messages.AcknowledgeMessage;
> AcknowledgeMessage;
>   import mx.messaging.messages.AcknowledgeMessageExt;
> AcknowledgeMessageExt;
>   import mx.messaging.messages.AsyncMessage; AsyncMessage;
>   import mx.messaging.messages.AsyncMessageExt; AsyncMessageExt;
>   import mx.messaging.messages.CommandMessage; CommandMessage;
>   import mx.messaging.messages.CommandMessageExt; CommandMessageExt;
>   import mx.messaging.messages.ErrorMessage; ErrorMessage;
>   import mx.messaging.messages.HTTPRequestMessage;
> HTTPRequestMessage;
>   import mx.messaging.messages.MessagePerformanceInfo;
> MessagePerformanceInfo;
>   import mx.messaging.messages.RemotingMessage; RemotingMessage;
>   import mx.messaging.messages.SOAPMessage; SOAPMessage;
>   import mx.messaging.messages.IMessage;IMessage;
>   import mx.messaging.config.ConfigMap; ConfigMap;
>   import mx.messaging.channels.HTTPChannel; HTTPChannel;
>   import mx.core.mx_internal;
>
>   import utils.RequiredClasses; RequiredClasses;
>
>
>   public class PortalBootstrapLoader extends Sprite {
>
>   public function PortalBootstrapLoader() {
>      super();
>      var required:RequiredClasses;
>    if
> (ApplicationDomain.currentDomain.hasDefinition("mx.core::UIComponent"))
>       throw new Error("UIComponent should not be in the bootstrap
> loader.");
>   /*  if
> (ApplicationDomain.currentDomain.hasDefinition("mx.core::Singleton"))
>       throw new Error("Singleton should not be in the bootstrap
> loader."); */
>    if (stage) {
>         stage.scaleMode = StageScaleMode.NO_SCALE;
>         stage.align = StageAlign.TOP_LEFT;
>    } else
>         isStageRoot = false;
>      root.loaderInfo.addEventListener(Event.INIT, onInit);
>   }
>   /**
>   * The Loader that loads the main application's SWF file.
>   */
>   private var loader:Loader;
>   /**
>   * Whether the bootstrap loader is at the stage root or not,
>   * it is the stage root only if it was the root
>   * of the first SWF file that was loaded by Flash Player.
>   * Otherwise, it could be a top-level application but not stage root
>   * if it was loaded by some other non-Flex shell or is sandboxed.
>   */
>   private var isStageRoot:Boolean = true;
>   /**
>   * Called when the bootstrap loader's SWF file has been loaded.
>   * Starts loading the application SWF specified by the
> applicationURL
>   * property.
>   */
>   private function onInit(event:Event):void {
>      loader = new Loader();
>        var loaderContext:LoaderContext  = new LoaderContext(
>         false,
>         new ApplicationDomain(ApplicationDomain.currentDomain),
>         SecurityDomain.currentDomain
>      );
>      addChild(loader);
>      loader.load(new URLRequest(applicationUrl), loaderContext );
>      loader.addEventListener(
>         "mx.managers.SystemManager.isBootstrapRoot",
>         bootstrapRootHandler
>      );
>      loader.addEventListener(
>         "mx.managers.SystemManager.isStageRoot",
>         stageRootHandler
>      );
>      loader.addEventListener(Event.ADDED, resizeHandler );
>      stage.addEventListener(Event.RESIZE, resizeHandler);
>   }
>   private function get applicationUrl():String{
>      var qs:QueryString = new QueryString();
>      //return qs.root + qs.parameters.app;
>        return "http://localhost:8080/aplicacao/index.swf";;
>   }
>   private function bootstrapRootHandler(event:Event):void {
>      event.preventDefault();
>   }
>   private function stageRootHandler(event:Event):void {
>      if (!isStageRoot)
>         event.preventDefault();
>   }
>   private function resizeHandler(event:Event=null):void {
>      if ( loader.content ){
>         Object(loader.content).setActualSize(stage.stageWidth,
> stage.stageHeight);
>      }
>   }
>  }
> }
>
> Classe utilitária:
>
> package utils
> {
>
>        import flash.display.Loader;
>    import flash.display.Sprite;
>    import flash.display.StageAlign;
>    import flash.display.StageScaleMode;
>    import flash.events.Event;
>    import flash.net.URLRequest;
>    import flash.system.ApplicationDomain;
>    import flash.system.LoaderContext;
>    import flash.system.SecurityDomain;
>
>    import mx.messaging.messages.AcknowledgeMessage;
> AcknowledgeMessage;
>    import mx.messaging.messages.AcknowledgeMessageExt;
> AcknowledgeMessageExt;
>    import mx.messaging.messages.AsyncMessage; AsyncMessage;
>    import mx.messaging.messages.AsyncMessageExt; AsyncMessageExt;
>    import mx.messaging.messages.CommandMessage; CommandMessage;
>    import mx.messaging.messages.CommandMessageExt; CommandMessageExt;
>    import mx.messaging.messages.ErrorMessage; ErrorMessage;
>    import mx.messaging.messages.HTTPRequestMessage;
> HTTPRequestMessage;
>    import mx.messaging.messages.MessagePerformanceInfo;
> MessagePerformanceInfo;
>    import mx.messaging.messages.RemotingMessage; RemotingMessage;
>    import mx.messaging.messages.SOAPMessage; SOAPMessage;
>    import mx.messaging.messages.IMessage;IMessage;
>    import mx.messaging.channels.HTTPChannel; HTTPChannel;
>    import mx.core.mx_internal;
>    import mx.messaging.config.ConfigMap; ConfigMap;
>    import mx.messaging.channels.AMFChannel; AMFChannel;
>    import mx.messaging.channels.StreamingAMFChannel;
> StreamingAMFChannel;
>    import mx.messaging.channels.StreamingConnectionHandler;
> StreamingConnectionHandler;
>    import mx.rpc.AbstractService; AbstractService;
>    import flash.utils.Proxy; Proxy;
>    import mx.messaging.messages.AbstractMessage; AbstractMessage;
>
>        public class RequiredClasses
>        {
>                public function RequiredClasses()
>                {
>                        var acknowledgeMessage:AcknowledgeMessage;
>                        var acknowledgeMessageExt:AcknowledgeMessageExt;
>                        var asyncMessage:AsyncMessage;
>                        var asyncMessageExt:AsyncMessageExt;
>                        var commandMessage:CommandMessage;
>                        var commandMessageExt:CommandMessageExt;
>                        var errorMessage:ErrorMessage;
>                        var hTTPRequestMessage:HTTPRequestMessage;
>                        var messagePerformanceInfo:MessagePerformanceInfo;
>                        var remotingMessage:RemotingMessage;
>                        var sOAPMessage:SOAPMessage;
>                        var iMessage:IMessage;
>                        var configMap:ConfigMap;
>                }
>
>        }
> }
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev




-- 
Mario Junior
http://blog.mariojunior.com/
@mariojunior

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a