Hi Seth, Sorry to bother you again... how to get the channel sets before connecting? This is what I'm trying to do:
_remoteObject = new RemoteObject(); _remoteObject.destination = remoteObjectDestination; var cs:ChannelSet = ServerConfig.getChannelSet(remoteObjectDestination); cs.channels.forEach( function(channel:*, index:uint, array:Array):void { Channel(channel).uri.replace("{context.root}", contextRoot); }); This approach does not work, all the channels from the channel set are marked as "undefined". remoteObjectDestination and contextRoot are both String properties. Thanks, Robert --- In flexcoders@yahoogroups.com, "Seth Hodgson" <[EMAIL PROTECTED]> wrote: > > What about allowing your customers to edit the HTML wrapper to pass a flashvar in to the swf that explicitly defines the context root they're deploying to? > Your code could check for this value and do your own string replace of any {context.root} tokens in your channel uris with this value before connecting (be careful when handling empty context root values). > > Seth > > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Robert Csiki > Sent: Friday, May 16, 2008 2:33 PM > To: flexcoders@yahoogroups.com > Subject: [flexcoders] Re: Is the context-root value burnt into SWF? > > > Thanks Seth, I understand it's different in Flex world. > > So does this mean customers are stuck with the context root we used when > compiling the application (e.g. which is equals to the application WAR > filename, less the extension)? We do not package the source code, all > they get is the SWFs and some html wrappers. > > Robert > > --- In flexcoders@yahoogroups.com, "Seth Hodgson" shodgson@ wrote: > > > > A context root is a Java servlet-ism, which allows the container to > route incoming requests to the correct web app. In HTML-land if you're > using relative URLs, you generally never have to worry about this > because the right value will be used automatically. It's a little more > complicated for a non-HTML client. The context root for a web app can > either be empty (i.e. /) or non-empty (i.e. /MyApp), and on the client > when a swf loads, it can inspect its URL but it doesn't have any way to > know what the server-side context root is. The MessageBrokerServlet that > processes HTTP-based requests from Flex clients is not relative to where > the swf was loaded from. You can define its path, which will generally > be something like: > http://{server}:{port}/{context.root}/messagebrokerservlet, but it could > be anything. To send a request to it successfully, the client needs to > use the correct context root. Take your URL below for example, > http://localhost:8080/MyApp/..., is the context root / or is it /MyApp - > who knows? Only the server. So unlike server name and port, the swf > can't dynamically determine the correct context root value at runtime on > the client. > > > > This means you need to either: > > 1. Specify it at compile time by hardcoding the proper context root > into the URL in your services-config.xml file, or by using a > {context.root} token in your URL in services-config.xml and passing the > desired value at compile time using the mxmlc -context-root flag. > > 2. Hardcode it into your client side ActionScript code. > > 3. Use the web tier mxmlc compiler which can replace a {context.root} > token with the correct value using HttpServletRequest#getContextPath() > when you request a .mxml in the browser > > > > Seth > > > > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] > On Behalf Of Robert Csiki > > Sent: Friday, May 16, 2008 1:45 PM > > To: flexcoders@yahoogroups.com > > Subject: [flexcoders] Is the context-root value burnt into SWF? > > > > Hi there, > > Say I'm using a context root value "MyApp" when compiling my > LCDS-based Flex application. I package everything into an archive called > "MyApp.war", depoly it on my Tomcat, startup tomcat, access the > application using http://localhost:8080/MyApp, everything works fine (I > have an index.html there that serves up the SWF) > > Now, if I want to deploy using a different context root for my > application (say "MyApp1")... call it using the URL > http://localhost:8080/MyApp1 ... nothing would work this time. The SWF > still gets loaded, and that's it. It seems this context-root value > that's set in flex_config.xml gets somehow burnt in the SWF? what can I > do to have the app running under a different context root, without the > need to rebuild the SWF? > > Also, a question: why this context-root configuration is required in > Flex environment? An application normally auto-detects it's context root > at runtime. An application is usually untied from a specific context > root and can be deployed using any context root. > > Thanks, Robert > > >