2011-10-20 36 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

通過在服務器根人工添加這兩個文件,它解決了這一問題。

相關問題