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