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
