Включите междоменный вызов на сервлете Java для приложения Silverlight - PullRequest
0 голосов
/ 20 октября 2011

У меня есть Java-сервлет с библиотекой OData4j , и я хочу настроить его так, чтобы я мог сделать HTTP-запрос POST из приложения 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» в каталог ресурсов, но это также не работает.Я по-прежнему получаю исключение SecurityException при отправке HTTP-запроса POST с моим приложением Silverlight.

Будем весьма благодарны за любые подсказки.

Спасибо

1 Ответ

0 голосов
/ 24 октября 2011

Оказывается, что создание экземпляра CrossDomainResourceConfig включает файлы "crossdomain.xml" и "clientaccesspolicy.xml". Дело в том, что они доступны по URL: /myService/crossdomain.xml и /myService/clientaccesspolicy.xml.

Однако среда выполнения Silverlight ищет эти файлы в корневом каталоге сервера (например: /clientaccesspolicy.xml)

Добавление обоих этих файлов вручную в корень сервера позволило решить проблему.

...