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 [email protected], "Seth Hodgson" <[EMAIL PROTECTED]> 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: [email protected] [mailto:[EMAIL PROTECTED]
On Behalf Of Robert Csiki
> Sent: Friday, May 16, 2008 1:45 PM
> To: [email protected]
> 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
>



Reply via email to