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
