<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>A Cup of Silverlight, RIA &amp; Interoperability : Tip</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/tags/Tip/default.aspx</link><description>Tags: Tip</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Tip : Add XAP Mime-Type in Tomcat and IIS 5.1</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/08/28/tip-add-silverlight-mime-type-in-tomcat-and-iis-5-1.aspx</link><pubDate>Thu, 28 Aug 2008 12:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8903075</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/8903075.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=8903075</wfw:commentRss><description>&lt;P&gt;Mime-Type are used to provide identifiers for file formats on the Internet.&lt;/P&gt;
&lt;P&gt;By default, XAP files are not recognized as a Silverlight application in Tomcat or IIS 5.1. You can set a Mime-Type to identify XAP files on both servers.&lt;/P&gt;
&lt;H4&gt;Setting Mime-Type in Tomcat&lt;/H4&gt;
&lt;P&gt;in %TOMCAT_INSTALL%/conf directory, edit web.xml file. Add the following description to identify XAP files&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;mime-mapping&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;extension&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;xap&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;extension&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;mime-type&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;application/x-silverlight-2-b2&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;mime-type&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;mime-mapping&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;STYLE type=text/css&gt;.csharpcode {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	MARGIN: 0em
}
.csharpcode .rem {
	COLOR: #008000
}
.csharpcode .kwrd {
	COLOR: #0000ff
}
.csharpcode .str {
	COLOR: #006080
}
.csharpcode .op {
	COLOR: #0000c0
}
.csharpcode .preproc {
	COLOR: #cc6633
}
.csharpcode .asp {
	BACKGROUND-COLOR: #ffff00
}
.csharpcode .html {
	COLOR: #800000
}
.csharpcode .attr {
	COLOR: #ff0000
}
.csharpcode .alt {
	MARGIN: 0em; WIDTH: 100%; BACKGROUND-COLOR: #f4f4f4
}
.csharpcode .lnum {
	COLOR: #606060
}
&lt;/STYLE&gt;

&lt;UL&gt;
&lt;LI&gt;Restart Tomcat and clear your navigator cache, &lt;/LI&gt;
&lt;LI&gt;get a XAP file to ensure that the Mime-Type is correctly set&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=330 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb.png" width=381 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;Setting Mime-Type in IIS 5.1&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;Open the IIS Management Console&lt;/LI&gt;
&lt;LI&gt;Open your Web Site properties, under HTTP Headers click on File Types button&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_4.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=294 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb_1.png" width=299 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;In the File Types window, click New Type to add a new Mime-Type&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_6.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=114 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb_2.png" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb_2.png"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_8.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=240 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb_3.png" width=221 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Get a XAP file within IIS to ensure that the Mime-Type is correctly set&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_10.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=322 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb_4.png" width=371 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipAddSilverlightMimeTypeinTomcatandII.1_9AC7/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;- &lt;A class="" href="http://www.linkedin.com/in/ronnykwon" mce_href="http://www.linkedin.com/in/ronnykwon"&gt;Ronny Kwon&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8903075" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Tip/default.aspx">Tip</category></item><item><title>Tip : Serving JSPs and Servlets from IIS through Tomcat</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/08/12/tip-make-iis-serving-jsps-and-servlets-through-tomcat.aspx</link><pubDate>Tue, 12 Aug 2008 17:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8851537</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/8851537.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=8851537</wfw:commentRss><description>&lt;P&gt;This tip is about making IIS as a front end to Tomcat hosting Servlets and JSPs on the back end. This architecture allows the hosting of JAX-WS or Restlet services in Tomcat while Silverlight clients are hosted in IIS without facing cross-domain issues. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;The configuration files and the connector (isapi_redirect.dll) are available as an attachment to this post. Before continuing, you must download the Zip archive and unzip it to C:\Program Files\Apache Software Foundation&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The following is inspired from &lt;/P&gt;&lt;A href="http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html" target=_blank mce_href="http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html"&gt;The Apache Tomcat Connector - Webserver HowTo : IIS HowTo&lt;/A&gt; 
&lt;H4&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Pre-requisites&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;From this point, we assume that &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;IIS 5.1 is installed on a Windows XP SP2 Professional Edition&lt;/LI&gt;
&lt;LI&gt;Apache Tomcat 6.0.16 is installed and working properly on the same OS&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;The Tomcat installation directory is C:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.16 &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;You have unzipped the archive, you must have the following directory : C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Configuring the ISAPI Redirector&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Open the Registry Editor, Run—&amp;gt;regedit&lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Create a new registry key names “&lt;STRONG&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0&lt;/STRONG&gt;”&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;The following screenshot shows you the different values you have to create in the previous created key&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_2.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=101 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb.png" width=575 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=570 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=200&gt;name&lt;/TD&gt;
&lt;TD class="" vAlign=top width=368&gt;value&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=200&gt;extension_uri&lt;/TD&gt;
&lt;TD class="" vAlign=top width=368&gt;/jakarta/isapi_redirect.dll&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=200&gt;log_file&lt;/TD&gt;
&lt;TD class="" vAlign=top width=368&gt;C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector\log\isapi_redirect.log&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=200&gt;log_level&lt;/TD&gt;
&lt;TD class="" vAlign=top width=368&gt;info&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=200&gt;worker_file&lt;/TD&gt;
&lt;TD class="" vAlign=top width=368&gt;C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector\conf\workers.properties.minimal&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=200&gt;worker_mount_file&lt;/TD&gt;
&lt;TD class="" vAlign=top width=368&gt;C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector\conf\uriworkermap.properties&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Open the IIS Management Console&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;add a new Virtual Directory to the Default Web Site&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_4.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=406 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_1.png" width=540 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Alias must be set to “&lt;STRONG&gt;jakarta&lt;/STRONG&gt;” &lt;/LI&gt;
&lt;LI&gt;Directory must be set to isapi_redirector.dll location C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector\bin &lt;/LI&gt;
&lt;LI&gt;Allow Execute permission &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_6.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=295 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_2.png" width=374 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_2.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Now let’s add a new ISAPI filter&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;open the properties dialog of the Default Web Site, in the ISAPI Filters tab, click add to add a new filter. &lt;/LI&gt;
&lt;LI&gt;Set the filter name to “jakarta” &lt;/LI&gt;
&lt;LI&gt;Executable is the exact location of the isapi_redirect.dll : C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector\bin\isapi_redirect.dll &lt;/LI&gt;
&lt;LI&gt;Restart the IIS Server then check for the jakarta filter, an up-green arrow has appeared&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_10.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=323 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_4.png" width=329 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Also start Tomcat server.&lt;/P&gt;
&lt;P&gt;In a Web Browser, ensure that &lt;A href="http://localhost:8080/examples/jsp/index.html" mce_href="http://localhost:8080/examples/jsp/index.html"&gt;http://localhost:8080/examples/jsp/index.html&lt;/A&gt; is accessible :&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_12.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=302 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_5.png" width=316 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;It’s normal, this page is served by Tomcat (assuming that it is running on port 8080)&lt;/P&gt;
&lt;P&gt;Now access to this page within IIS (in our case, we set IIS port to 81), by default port 80 is used. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_18.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_18.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=335 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_8.png" width=341 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_8.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Go to &lt;A href="http://localhost:81/examples/jsp/index.html" mce_href="http://localhost:81/examples/jsp/index.html"&gt;http://localhost:81/examples/jsp/index.html&lt;/A&gt;. A similar page is displayed.&lt;/P&gt;
&lt;P&gt;Try to execute a jsp example :&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_16.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_16.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=265 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_7.png" width=559 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_7.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_14.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=382 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipmakeIISservingJSPsandServletsthroughT_E5BF/image_thumb_3.png" width=439 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Configuring the URL mapping&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In the C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector\conf directory you will find two configuration files :&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://tomcat.apache.org/connectors-doc/reference/workers.html" target=_blank mce_href="http://tomcat.apache.org/connectors-doc/reference/workers.html"&gt;workers.properties.minimal&lt;/A&gt; : it describes the host(s) and port(s) used by Tomcat processes. &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://tomcat.apache.org/connectors-doc/reference/uriworkermap.html" target=_blank mce_href="http://tomcat.apache.org/connectors-doc/reference/uriworkermap.html"&gt;uriworkermap.properties&lt;/A&gt; : it maps URL-Path patterns to workers&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In the uriworkermap.properties you will find the mapping of URL to be handled by the workers declared in workers.properties. An example of URL mapping:&lt;/P&gt;
&lt;P&gt;default.worker=ajp13 &lt;/P&gt;
&lt;P&gt;/docs=$(default.worker) &lt;BR&gt;/docs/*=$(default.worker) &lt;BR&gt;/examples=$(default.worker) &lt;BR&gt;&lt;STRONG&gt;/examples/*=$(default.worker) &lt;/STRONG&gt;&lt;BR&gt;/host-manager=$(default.worker) &lt;BR&gt;/host-manager/*=$(default.worker) &lt;BR&gt;/manager=$(default.worker) &lt;BR&gt;/manager/*=$(default.worker) &lt;/P&gt;
&lt;P mce_keep="true"&gt;In this configuration, every request on /examples/* will be handled by the Tomcat process, that’s how we managed to serve JSPs and Servlets&amp;nbsp;from IIS through Tomcat. You may add&amp;nbsp;your own&amp;nbsp;URL patterns... if you do so, don’t forget to restart the Tomcat Server.&lt;/P&gt;
&lt;P&gt;- &lt;A class="" href="http://www.linkedin.com/in/ronnykwon" target=_blank mce_href="http://www.linkedin.com/in/ronnykwon"&gt;Ronny Kwon&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8851537" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/silverlight_plus_java/attachment/8851537.ashx" length="121440" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Implementation/default.aspx">Implementation</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Interoperability/default.aspx">Interoperability</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Tip/default.aspx">Tip</category></item><item><title>Tip : Cross Domain Policy when Self-Hosting your Services</title><link>http://blogs.msdn.com/silverlight_plus_java/archive/2008/08/11/tips-cross-domain-policy-files-in-self-hosted-services.aspx</link><pubDate>Mon, 11 Aug 2008 15:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8848024</guid><dc:creator>Steve SFARTZ</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/silverlight_plus_java/comments/8848024.aspx</comments><wfw:commentRss>http://blogs.msdn.com/silverlight_plus_java/commentrss.aspx?PostID=8848024</wfw:commentRss><description>&lt;P&gt;This &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Tips/default.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Tips/default.aspx"&gt;tip&lt;/A&gt; is about self hosting of services with the .Net WCF&amp;nbsp;or Java Restlet framework. &lt;A href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/Cross-Domain-_3A00_-Trouble-while-accessing-Web-Services.aspx" mce_href="http://blogs.msdn.com/silverlight_plus_java/archive/2008/07/31/Cross-Domain-_3A00_-Trouble-while-accessing-Web-Services.aspx"&gt;Cross-domain access&lt;/A&gt;&amp;nbsp;is mandatory here since the Site of Origin does not host the services.&lt;/P&gt;
&lt;P&gt;Self hosting a service represents a quick &amp;amp; easy&amp;nbsp;way to expose a Web Service for tests purpose. Yet, customization is extermely limited since self hosting does not provide you all the capabilities of Web Servers such as delivering static content (cross domain policy file).&lt;/P&gt;
&lt;P&gt;The first thing you need to know is that when Silverlight attempts to access services in cross-domain, it will send a HTTP GET method on http://&amp;lt;domain:port&amp;gt;/clientaccesspolicy.xml or http://&amp;lt;domain:port&amp;gt;/crossdomain.xml (in case clientaccesspolicy.xml wasn’t found). If you plan to self host your Web Service, you will agree that there is no possible way to host a physical Cross Domain policy file at the root of the Web Server.&lt;/P&gt;
&lt;P&gt;You must handle this request through your Service implementation. It usually matches the /clientaccesspolicy.xml or /crossdomain.xml URI pattern. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WCF way (inspired from &lt;A href="http://blogs.msdn.com/carlosfigueira/archive/2008/03/07/enabling-cross-domain-calls-for-silverlight-apps-on-self-hosted-web-services.aspx" target=_blank mce_href="http://blogs.msdn.com/carlosfigueira/archive/2008/03/07/enabling-cross-domain-calls-for-silverlight-apps-on-self-hosted-web-services.aspx"&gt;Carlo’s blog&lt;/A&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Self-hosted Service&lt;/U&gt; &lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; Program&lt;/PRE&gt;&lt;PRE&gt;{&lt;/PRE&gt;&lt;PRE class=alt&gt;    &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; Main(&lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt;[] args)&lt;/PRE&gt;&lt;PRE&gt;    {&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;// URI of the Service&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        Uri uri = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Uri(&lt;SPAN class=str&gt;"http://localhost:8081/"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;// create a new WebServiceHost specifying the implementation of the Service&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;// and the specified uri to bind with&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        WebServiceHost host = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; WebServiceHost(&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; REST_ItemsServiceLibrary.ItemsREST(),&lt;/PRE&gt;&lt;PRE&gt;                uri);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;// add the Service Endpoint specifying the Service Interface&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        host.AddServiceEndpoint(&lt;SPAN class=kwrd&gt;typeof&lt;/SPAN&gt;(REST_ItemsServiceLibrary.IItemsREST),&lt;/PRE&gt;&lt;PRE&gt;                                &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; WebHttpBinding(), &lt;SPAN class=str&gt;""&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;// open the WebServiceHost&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        host.Open();&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        Console.WriteLine(&lt;SPAN class=str&gt;"Service hosted at {0}"&lt;/SPAN&gt;, uri.OriginalString);&lt;/PRE&gt;&lt;PRE class=alt&gt;        Console.ReadLine();&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;// close the WebServiceHost&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        host.Close();&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;    }&lt;/PRE&gt;&lt;PRE class=alt&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;
&lt;STYLE type=text/css&gt;.csharpcode {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	MARGIN: 0em
}
.csharpcode .rem {
	COLOR: #008000
}
.csharpcode .kwrd {
	COLOR: #0000ff
}
.csharpcode .str {
	COLOR: #006080
}
.csharpcode .op {
	COLOR: #0000c0
}
.csharpcode .preproc {
	COLOR: #cc6633
}
.csharpcode .asp {
	BACKGROUND-COLOR: #ffff00
}
.csharpcode .html {
	COLOR: #800000
}
.csharpcode .attr {
	COLOR: #ff0000
}
.csharpcode .alt {
	MARGIN: 0em; WIDTH: 100%; BACKGROUND-COLOR: #f4f4f4
}
.csharpcode .lnum {
	COLOR: #606060
}
&lt;/STYLE&gt;
&lt;U&gt;Handling cross-domain file requests&lt;/U&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As we said earlier, we have to manage the /clientaccesspolicy.xml, specify in the Service Interface that HTTP GET method on the URI /clientaccesspolicy.xml will be handled by GetSilverlightPolicy();&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;[OperationContract]&lt;/PRE&gt;&lt;PRE&gt;[WebGet(UriTemplate =&lt;SPAN class=str&gt;"/clientaccesspolicy.xml"&lt;/SPAN&gt;)]&lt;/PRE&gt;&lt;PRE class=alt&gt;Stream GetSilverlightPolicy();&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;
&lt;STYLE type=text/css&gt;.csharpcode {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	MARGIN: 0em
}
.csharpcode .rem {
	COLOR: #008000
}
.csharpcode .kwrd {
	COLOR: #0000ff
}
.csharpcode .str {
	COLOR: #006080
}
.csharpcode .op {
	COLOR: #0000c0
}
.csharpcode .preproc {
	COLOR: #cc6633
}
.csharpcode .asp {
	BACKGROUND-COLOR: #ffff00
}
.csharpcode .html {
	COLOR: #800000
}
.csharpcode .attr {
	COLOR: #ff0000
}
.csharpcode .alt {
	MARGIN: 0em; WIDTH: 100%; BACKGROUND-COLOR: #f4f4f4
}
.csharpcode .lnum {
	COLOR: #606060
}
&lt;/STYLE&gt;
this also applies to /crossdomain.xml&lt;/P&gt;
&lt;P&gt;Finally, in your Service implementation, return a clientaccesspolicy.xml content:&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; Stream GetSilverlightPolicy()&lt;/PRE&gt;&lt;PRE&gt;{&lt;/PRE&gt;&lt;PRE class=alt&gt;    &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; result = &lt;SPAN class=str&gt;@"&amp;lt;?xml version="&lt;/SPAN&gt;&lt;SPAN class=str&gt;"1.0"&lt;/SPAN&gt;&lt;SPAN class=str&gt;" encoding="&lt;/SPAN&gt;&lt;SPAN class=str&gt;"utf-8"&lt;/SPAN&gt;&lt;SPAN class=str&gt;"?&amp;gt;&lt;/PRE&gt;&lt;PRE&gt;&amp;lt;access-policy&amp;gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;    &amp;lt;cross-domain-access&amp;gt;&lt;/PRE&gt;&lt;PRE&gt;        &amp;lt;policy&amp;gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &amp;lt;allow-from http-request-headers="&lt;/SPAN&gt;&lt;SPAN class=str&gt;"*"&lt;/SPAN&gt;&lt;SPAN class=str&gt;"&amp;gt;&lt;/PRE&gt;&lt;PRE&gt;                &amp;lt;domain uri="&lt;/SPAN&gt;&lt;SPAN class=str&gt;"*"&lt;/SPAN&gt;&lt;SPAN class=str&gt;"/&amp;gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &amp;lt;/allow-from&amp;gt;&lt;/PRE&gt;&lt;PRE&gt;            &amp;lt;grant-to&amp;gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                &amp;lt;resource path="&lt;/SPAN&gt;&lt;SPAN class=str&gt;"/"&lt;/SPAN&gt;&lt;SPAN class=str&gt;" include-subpaths="&lt;/SPAN&gt;&lt;SPAN class=str&gt;"true"&lt;/SPAN&gt;&lt;SPAN class=str&gt;"/&amp;gt;&lt;/PRE&gt;&lt;PRE&gt;            &amp;lt;/grant-to&amp;gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &amp;lt;/policy&amp;gt;&lt;/PRE&gt;&lt;PRE&gt;    &amp;lt;/cross-domain-access&amp;gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;lt;/access-policy&amp;gt;"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE&gt;    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; StringToStream(result);&lt;/PRE&gt;&lt;PRE class=alt&gt;}&lt;/PRE&gt;&lt;PRE&gt;Stream StringToStream(&lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; result)&lt;/PRE&gt;&lt;PRE class=alt&gt;{&lt;/PRE&gt;&lt;PRE&gt;    WebOperationContext.Current.OutgoingResponse.ContentType = &lt;SPAN class=str&gt;"application/xml"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE class=alt&gt;    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; MemoryStream(Encoding.UTF8.GetBytes(result));&lt;/PRE&gt;&lt;PRE&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;STYLE type=text/css&gt;.csharpcode {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	MARGIN: 0em
}
.csharpcode .rem {
	COLOR: #008000
}
.csharpcode .kwrd {
	COLOR: #0000ff
}
.csharpcode .str {
	COLOR: #006080
}
.csharpcode .op {
	COLOR: #0000c0
}
.csharpcode .preproc {
	COLOR: #cc6633
}
.csharpcode .asp {
	BACKGROUND-COLOR: #ffff00
}
.csharpcode .html {
	COLOR: #800000
}
.csharpcode .attr {
	COLOR: #ff0000
}
.csharpcode .alt {
	MARGIN: 0em; WIDTH: 100%; BACKGROUND-COLOR: #f4f4f4
}
.csharpcode .lnum {
	COLOR: #606060
}
&lt;/STYLE&gt;

&lt;P&gt;&lt;STRONG&gt;Restlet way&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Self-hosted Service &lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; main(String[] args) {&lt;/PRE&gt;&lt;PRE&gt;    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;// Create a new Component.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        Component component = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Component();&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;// Add a new HTTP server listening on port 8182.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        component.getServers().add(Protocol.HTTP, 8182);&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;// Attach the sample application.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        component.getDefaultHost().attach(&lt;/PRE&gt;&lt;PRE&gt;                &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; FirstResourceApplication(component.getContext()));&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;// Start the component.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        component.start();&lt;/PRE&gt;&lt;PRE&gt;        &lt;/PRE&gt;&lt;PRE class=alt&gt;    } &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (Exception e) {&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;// Something is wrong.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        e.printStackTrace();&lt;/PRE&gt;&lt;PRE&gt;    }&lt;/PRE&gt;&lt;PRE class=alt&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;STYLE type=text/css&gt;.csharpcode {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	FONT-SIZE: small; COLOR: black; FONT-FAMILY: consolas, "Courier New", courier, monospace; BACKGROUND-COLOR: #ffffff
}
.csharpcode PRE {
	MARGIN: 0em
}
.csharpcode .rem {
	COLOR: #008000
}
.csharpcode .kwrd {
	COLOR: #0000ff
}
.csharpcode .str {
	COLOR: #006080
}
.csharpcode .op {
	COLOR: #0000c0
}
.csharpcode .preproc {
	COLOR: #cc6633
}
.csharpcode .asp {
	BACKGROUND-COLOR: #ffff00
}
.csharpcode .html {
	COLOR: #800000
}
.csharpcode .attr {
	COLOR: #ff0000
}
.csharpcode .alt {
	MARGIN: 0em; WIDTH: 100%; BACKGROUND-COLOR: #f4f4f4
}
.csharpcode .lnum {
	COLOR: #606060
}
&lt;/STYLE&gt;

&lt;P&gt;&lt;U&gt;Handling cross-domain file requests&lt;/U&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Following the same philosophy as the WCF way, we need to handle HTTP GET method on /clientaccesspolicy.xml file request :&lt;/P&gt;
&lt;P&gt;In the Application implementation you must bind the URI pattern with the Ressource that will handle it :&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipsCrossdomainpolicyfilesinselfhostedSe_CA95/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipsCrossdomainpolicyfilesinselfhostedSe_CA95/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=247 alt=image src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipsCrossdomainpolicyfilesinselfhostedSe_CA95/image_thumb.png" width=552 border=0 mce_src="http://blogs.msdn.com/blogfiles/silverlight_plus_java/WindowsLiveWriter/TipsCrossdomainpolicyfilesinselfhostedSe_CA95/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Finally, implement the ClientAccessPolicy class, specially the HTTP GET method within getRepresentation method :&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;package firstResource;&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;import java.io.IOException;&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;import org.restlet.Context;&lt;/PRE&gt;&lt;PRE&gt;import org.restlet.data.MediaType;&lt;/PRE&gt;&lt;PRE class=alt&gt;import org.restlet.data.Request;&lt;/PRE&gt;&lt;PRE&gt;import org.restlet.data.Response;&lt;/PRE&gt;&lt;PRE class=alt&gt;import org.restlet.resource.DomRepresentation;&lt;/PRE&gt;&lt;PRE&gt;import org.restlet.resource.Representation;&lt;/PRE&gt;&lt;PRE class=alt&gt;import org.restlet.resource.Resource;&lt;/PRE&gt;&lt;PRE&gt;import org.restlet.resource.Variant;&lt;/PRE&gt;&lt;PRE class=alt&gt;import org.w3c.dom.Document;&lt;/PRE&gt;&lt;PRE&gt;import org.w3c.dom.Element;&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; ClientAccessPolicy extends Resource{&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; ClientAccessPolicy(Context context, Request request,&lt;/PRE&gt;&lt;PRE class=alt&gt;            Response response) {&lt;/PRE&gt;&lt;PRE&gt;        super(context, request, response);&lt;/PRE&gt;&lt;PRE class=alt&gt;        getVariants().add(&lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Variant(MediaType.TEXT_XML));&lt;/PRE&gt;&lt;PRE&gt;    }&lt;/PRE&gt;&lt;PRE class=alt&gt;    &lt;/PRE&gt;&lt;PRE&gt;    @Override&lt;/PRE&gt;&lt;PRE class=alt&gt;    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; Representation getRepresentation(Variant variant){&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (MediaType.TEXT_XML.equals(variant.getMediaType())) {&lt;/PRE&gt;&lt;PRE class=alt&gt;             &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;PRE&gt;                DomRepresentation representation = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; DomRepresentation(&lt;/PRE&gt;&lt;PRE class=alt&gt;                      MediaType.TEXT_XML);&lt;/PRE&gt;&lt;PRE&gt;                &lt;SPAN class=rem&gt;// Generate a DOM document representing the list of&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;SPAN class=rem&gt;// items.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;                Document d = representation.getDocument();&lt;/PRE&gt;&lt;PRE class=alt&gt;                Element accesspolicy = d.createElement(&lt;SPAN class=str&gt;"access-policy"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE&gt;                d.appendChild(accesspolicy);&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;/PRE&gt;&lt;PRE&gt;                Element crossdomainaccess = d.createElement(&lt;SPAN class=str&gt;"cross-domain-access"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;                accesspolicy.appendChild(crossdomainaccess);&lt;/PRE&gt;&lt;PRE&gt;                &lt;/PRE&gt;&lt;PRE class=alt&gt;                Element policy = d.createElement(&lt;SPAN class=str&gt;"policy"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE&gt;                crossdomainaccess.appendChild(policy);&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;/PRE&gt;&lt;PRE&gt;                Element allowfrom = d.createElement(&lt;SPAN class=str&gt;"allow-from"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;                allowfrom.setAttribute(&lt;SPAN class=str&gt;"http-request-headers"&lt;/SPAN&gt;,&lt;SPAN class=str&gt;"*"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE&gt;                &lt;/PRE&gt;&lt;PRE class=alt&gt;                Element domain = d.createElement(&lt;SPAN class=str&gt;"domain"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE&gt;                domain.setAttribute(&lt;SPAN class=str&gt;"uri"&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"*"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;/PRE&gt;&lt;PRE&gt;                allowfrom.appendChild(domain);&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;/PRE&gt;&lt;PRE&gt;                Element grantto = d.createElement(&lt;SPAN class=str&gt;"grant-to"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;                Element resource = d.createElement(&lt;SPAN class=str&gt;"resource"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE&gt;                resource.setAttribute(&lt;SPAN class=str&gt;"include-subpaths"&lt;/SPAN&gt;,&lt;SPAN class=str&gt;"true"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;                resource.setAttribute(&lt;SPAN class=str&gt;"path"&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"/"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE&gt;                &lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;/PRE&gt;&lt;PRE&gt;                grantto.appendChild(resource);&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;/PRE&gt;&lt;PRE&gt;                policy.appendChild(allowfrom);&lt;/PRE&gt;&lt;PRE class=alt&gt;                policy.appendChild(grantto);&lt;/PRE&gt;&lt;PRE&gt;                &lt;/PRE&gt;&lt;PRE class=alt&gt;                d.normalizeDocument();&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;                &lt;SPAN class=rem&gt;// Returns the XML representation of this document.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; representation;&lt;/PRE&gt;&lt;PRE&gt;             } &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (IOException e) {&lt;/PRE&gt;&lt;PRE class=alt&gt;                e.printStackTrace();&lt;/PRE&gt;&lt;PRE&gt;             }&lt;/PRE&gt;&lt;PRE class=alt&gt;          }&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;          &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE&gt;    }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;- &lt;A class="" href="http://www.linkedin.com/in/ronnykwon" target=_blank mce_href="http://www.linkedin.com/in/ronnykwon"&gt;Ronny Kwon&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8848024" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Implementation/default.aspx">Implementation</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/D2D/default.aspx">D2D</category><category domain="http://blogs.msdn.com/silverlight_plus_java/archive/tags/Tip/default.aspx">Tip</category></item></channel></rss>