2016-08-08 2 views
0

У меня есть приложение struts2, и мне нужно показать внутри него видео, которое отображается в другом веб-приложении.Struts2 - перенаправить запрос в другое приложение - видео

Это код, который отображает видео. Этот IP-адрес недоступен в Интернете, только на сервере, где находится мое приложение для расположений.

<img src="http://<ip_from_other_server/showVideo"> 

Мне нужно действие в struts2, что я могу сделать запрос и он будет направить ответ от другого сервера. Является ли это возможным?

ответ

0

Я мог бы найти решение.

Я использовал этот проект: https://github.com/mitre/HTTP-Proxy-Servlet

С, что я мог бы перенаправить запросы на другой сервер. В представлении клиента мой собственный сервер отвечает на запрос.

В web.xml, я поставил следующее:

<servlet> 
    <servlet-name>otherServer</servlet-name> 
    <servlet-class>org.mitre.dsmiley.httpproxy.URITemplateProxyServlet</servlet-class> 
    <init-param> 
     <param-name>targetUri</param-name> 
     <param-value>http://{_ipOtherServer}:{_portOtherServer}/myAction</param-value> 
    </init-param> 
    <init-param> 
     <param-name>log</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>otherServer</servlet-name> 
    <url-pattern>/otherServer/action/*</url-pattern> 
</servlet-mapping> 

Кроме того, в struts.xml я должен был исключить все запросы, которые соответствовали/otherServer.

<constant name="struts.action.excludePattern" value="/otherServer/.*"/> 
1

Помимо решения стойки вы можете попытаться настроить прокси-сервер (apache), который перенаправит запрос на ваш видеосервер. При этом у вас нет такого огромного пакета программного обеспечения. Примеры здесь: Apache mod_proxy

Но если вы решили использовать решение распорок, вот некоторые идеи:

  • Создать действие с возможностью подключения к видеосерверу, может быть с FileOutputStream как этот ответ: Download file with java
  • Используйте этот файл (сохраненный временный где-то), открыть поток для него и Ретур его в <img href="mypicture"> -действие, может быть, как здесь: Struts2 ServletResponseAware или здесь Struts Stream Result

Если вы хотите, я могу получить немного подробнее.

+0

Я хотел бы использовать решение распорок, у меня есть вопрос о том, чтобы постоянно обновлять видео пользователя, потому что мой видеосервер ВСЕГДА посылает новое содержание, потому что это реальное содержание времени. Я пробовал: Файл tempVideoFile = новый файл ("/ path/temp.mp4"); FileOutputStream fos = new FileOutputStream (tempVideoFile); fos.getChannel(). TransferFrom (rbc, 0, 50000); Затем, передавая результат пользователю. Но я не могу воспроизвести видео. – henriquels

+0

С идеей выше вы не можете передавать видео, просто статические файлы. Для перенаправления видео вам нужно что-то вроде потокового прокси-сервера. Я не думаю, что в этом специальном случае вы будете использовать опционы для вас. – beendr

Смежные вопросы