2016-08-08 10 views
0

Ich habe eine Struts2-Anwendung und ich muss darin ein Video zeigen, das in einer anderen Web-App gezeigt wird.Struts2 - Redirect Anfrage an eine andere Anwendung - Video

Dies ist der Code, der das Video zeigt. Diese IP ist im Internet nicht zugänglich, nur auf dem Server, auf dem sich meine Struts-App befindet.

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

Ich brauche eine Aktion in struts2, dass ich einen Antrag stellen kann, und es wird auf die Antwort von dem anderen Server weiterleiten. Ist es möglich?

Antwort

0

Ich könnte eine Lösung finden.

ich verwenden, um dieses Projekt: https://github.com/mitre/HTTP-Proxy-Servlet

Damit ich die Anfragen an den anderen Server umleiten könnte. In der Client-Ansicht beantwortet mein eigener Server die Anfrage.

In der web.xml, habe ich folgendes:

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

Auch in struts.xml ich alle Anfragen auszuschließen hatten, die/Other abgestimmt.

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

Neben der Struts-Lösung könnten Sie versuchen, einen (Apache) Proxy einzurichten, der die Anfrage an Ihren Videoserver weiterleitet. Damit haben Sie nicht diesen riesigen Software-Stack. Beispiele sind hier: Apache mod_proxy

Aber wenn Sie sich entscheiden, die Streben Lösung zu verwenden, hier einige Ideen:

  • eine Aktion mit der Möglichkeit erstellen, um Ihren Video-Server mit einem Outputstream wie diese Antwort, vielleicht zu verbinden: Download file with java
  • Verwenden sie diese Datei (temporäre irgendwo gespeichert), öffnen sie einen Stream für sie und retur es in Ihrem <img href="mypicture"> -Action, vielleicht wie hier: Struts2 ServletResponseAware oder hier Struts Stream Result

Wenn Sie wollen, kann ich ein bisschen mehr im Detail bekommen.

+0

Ich mag würde die Streben Lösung verwenden, habe ich eine Frage, wie, um kontinuierlich das Video an den Benutzer zu aktualisieren, weil mein Videoserver Allways neue Inhalte zu senden, weil es Echtzeit-Gehalt. Ich habe es versucht: Datei tempVideoFile = neue Datei ("/ path/temp.mp4"); FileOutputStream fos = neuer FileOutputStream (tempVideoFile); fos.getChannel(). TransferFrom (rbc, 0, 50000); Dann Streaming das Ergebnis an den Benutzer. Aber ich kann das Video nicht wiedergeben. – henriquels

+0

Mit der obigen Idee können Sie kein Video streamen, nur statische Dateien. Für Weiterleitungsvideos benötigen Sie etwas wie einen Stream-Proxy-Server. Ich glaube nicht, dass Streben in diesem speziellen Fall eine Option für Sie sein werden. – beendr

Verwandte Themen