2011-10-20 22 views
0

我有一个java servlet和OData4j库,我想配置它,以便我可以从Silverlight应用程序发出HTTP POST请求。在Java Servlet上为Silverlight应用程序启用跨域调用

我的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> 

但它不工作。我也尝试将“crossdomain.xml”和“clientaccesspolicy.xml”文件添加到我的资源目录中,但这也不起作用。使用我的Silverlight应用程序发送HTTP POST请求时,仍然会发生SecurityException。

任何提示将不胜感激。

感谢

+0

定义“不起作用”。安全例外是否表明它“不起作用”?或者是其他事情发生。你会得到什么日志? – Tim

+0

是的,我的意思是一个相同的安全例外。我终于发现什么是错的;见下面的答案。 – Mathieu

回答

0

原来,实例CrossDomainResourceConfig不启用 “crossdomain.xml的” 和 “clientaccesspolicy.xml” 文件。问题是,他们可以在网址:/myService/crossdomain.xml/myService/clientaccesspolicy.xml

然而,Silverlight运行时查找这些文件在服务器根(例如:/clientaccesspolicy.xml

通过在服务器根人工添加这两个文件,它解决了这一问题。

相关问题