2009-06-19 8 views
0

Edit: Il est évident que ma première question n'a pas été vraiment facile à comprendre, j'espère que la réponse est utile :)Comment exposer les SharedObjects de Red5 via SOAP

J'ai essayé d'installer Axis2 sur le serveur Red5 et tout est bien passé, je a accédé aux propriétés de l'application Red5 à partir d'un service Web personnalisé à l'aide de RTMPClient de Red5 et les a exposées via Axis2. Le problème est que, de cette façon, j'ai un serveur à 2 niveaux et je n'ai pas vraiment d'accès direct depuis le webservice vers les objets partagés, etc ... Ce que je voudrais faire, c'est pouvoir accéder certaines applications Red5 fonctionnent directement via la classe de service SOAP.

Je suppose que je vais devoir créer le serveur SOAP sur mon propre (en utilisant peut-être SimpleHTTPServer ou SimpleAxis2Server Axis ??)

Toutes les idées ??

J'espère que je me suis expliqué ... Et merci à l'avance

Répondre

0

!!! Résolue Au lieu d'utiliser Axis2, j'ai utilisé JAX-WS, ce dont j'avais vraiment besoin.

J'ai créé une classe à utiliser comme WebService et d'exposer mes SharedObjects

package my.package; 
import javax.jws.WebService; 
@WebService 
public class Red5WS{ 
    MyApplication app = null; 
    public Game(){ 
     /* Needed but it can be empty */ 
    } 
    public Game(MyApplication app){ 
     this.app = app; 
    } 
    public String getAttribute(String SOname, String attrName){ 
     ISharedObject so = app.getSharedObject(this.app.getScope(), SOname,true); 
     return so.getAttribute(attrName); 
    } 
} 

Puis j'ai ajouté un appel à Endpoint.publish() sur MesApplications fonction APPSTART pour exécuter le WebService dès que l'application est exécutée . Je passe cela comme un paramètre au constructeur Red5WS pour être en mesure d'accéder aux applications cadre du service Web:

package my.package; 
import javax.xml.ws.Endpoint; 
import org.red5.server.adapter.ApplicationAdapter; 
public class MyApplication extends ApplicationAdapter{ 
    @Override 
    public boolean appStart (IScope app){ 
     Endpoint.publish(
      "http://localhost:8080/WebService/red5ws", 
      new Red5WS(this)); 
     } 
     return super.appStart(); 
    } 
} 

Après avoir compilé l'application Red5 il est indispensable d'utiliser le wsgen pour créer les classes WS nécessaires.

wsgen –cp . my.package.Red5WS 

Une fois redémarré l'application Red5 vous devriez être en mesure d'acces fichier WSDL de service Web via:

http://localhost:8080/WebService/red5ws?WSDL 
Questions connexes