I've been using struts2 + the rest plugin successfully to create a simple
rest api web service.  I'd like to make that service accessible to Flash and
Silverlight clients, which means I need to add a crossdomain.xml access file
at the root of my webapp.  Normally I would just copy a crossdomain.xml file
into the root of my webapp and serve it as a static file.

However, this doesn't seem to work with the rest plugin, as it attempt to
map the request for /crossdomain.xml to an action named CrossdomainAction
action (its index() method specifically).  Ok, so I create a
CrossdomainAction class which just has an index() method that returns
"success".  Except now, the request returns the action object serialized as
xml, which isn't what I want either.

Is there an easier way to do this that I'm missing?

The solution I've finally ended up with is to define a custom result with a
name of "success-xml", since the rest interceptor will check for a result
with that name.  Of course, if I attempt to set my result location to
"crossdomain.xml", it throws an exception on startup because the Convention
plugin doesn't know how to handle results with an extension of "xml".  So I
ended up renaming my "crossdomain.xml" file to "crossdomain.html" and
writing a custom Result that sets the contentType to "text/xml" and includes
the crossdomain file.  Pretty convoluted... surely there is something
better?

I'm using struts-2.1.18.1

Thanks,
Brian

Reply via email to