Ta certo.. é ApplicationDomain mesmo.. sorry!

Modulos com compilacoes diferentes nunca fiz... sempre q trabalhei com
Modulos eram todos compilados com o mesmo SDK.
Mas nunca tive problemas em chamar o back-end com eles... estranho.

Já com compilacao diferente, só trabalhei uma vez com Sub-Applications e tb
nao tive problemas.

Dá uma olhada nakele PDF da Adobe  "Loading Sub Applications", talvez tenha
algo q te ajude lá.


Agora uma pergunta: Pra q serve essa classe PortalBootStrapLoader?? Pq vc
precisa de um Sprite para "encapsular" os modulos?
At;e achei a idéia interessante, mas nao vi a necessidade de implementar
isso ainda.


[]'s







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

> 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 <[email protected]> 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 <[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=/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
> [email protected]
> > > Para sair da lista, envie um email em branco para
> > > [email protected]
> > > 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 [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