Não existe a propriedade currentDomain em Application.application,
desta forma seria"ApplicationDomain.currentDomain", porém se coloco
este parâmetro a configuração do loaderContext entra no contexto "Same
Sandbox Child Domain (SSCD)" e desta maneira o Flex chama a sub-
aplicação supondo que a(s) sub-aplicação está usando a mesma versão do
compilador e componentes, o que não é meu caso, preciso trabalhar com
multi-version. Então como diz na documentação "o Flex pode trabalhar
de maneira inesperada", no meu caso quando coloquei a conguração SSCD
(usando new ApplicationDomain(ApplicationDomain.currentDomain)) a
aplicação chamou como sub-aplicação ela mesma =S. Ficando por exemplo
minha App1 dentro da App1, e a URL estava correta chamando a App2.

Obrigado pela atenção

On Feb 15, 3:34 pm, Mário Júnior <juninho...@gmail.com> wrote:
> 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 <arthur....@gmail.com>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=/aplic...
> > 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 flexdev@googlegroups.com
> > Para sair da lista, envie um email em branco para
> > flexdev-unsubscr...@googlegroups.com
> > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev
>
> --
> Mario Juniorhttp://blog.mariojunior.com/
> @mariojunior

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

Responder a