在Java servlet上为Silverlight应用程序启用跨域调用

时间:2011-10-20 17:45:28

标签: java silverlight jetty odata odata4j

我有一个带有 OData4j 库的java servlet,我想配置它,以便我可以从Silverlight应用程序发出HTTP POST请求。

我的web.xml文件如下所示:

<servlet>
  <servlet-name>OData</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
     <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
     <param-value>org.odata4j.producer.resources.ODataResourceConfig</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>OData</servlet-name>
    <url-pattern>/myService/*</url-pattern>
</servlet-mapping>

我已经尝试将其添加到我的web.xml文件中:

<servlet>
  <servlet-name>CrossDomain</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
     <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
     <param-value>org.odata4j.producer.resources.CrossDomainResourceConfig</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CrossDomain</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

但它不起作用。我也尝试添加&#34; crossdomain.xml&#34;和&#34; clientaccesspolicy.xml&#34;文件到我的资源目录,但也不起作用。使用Silverlight应用程序发送HTTP POST请求时,仍然会收到SecurityException。

任何提示都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

事实证明,实例化CrossDomainResourceConfig会启用“crossdomain.xml”和“clientaccesspolicy.xml”文件。问题是它们位于网址:/myService/crossdomain.xml/myService/clientaccesspolicy.xml

但是,Silverlight运行时在服务器根目录中查找这些文件(例如:/clientaccesspolicy.xml

通过在服务器根目录中手动添加这两个文件,它解决了问题。