Domanda

Modifica: ovviamente la mia prima domanda non è stata davvero facile da capire, spero che la risposta sia utile :)

Ho provato a installare Axis2 sul server Red5 e tutto è andato bene, ho avuto accesso alle proprietà dell'app Red5 da un servizio Web personalizzato utilizzando RTMPClient di Red5 e le ho esposte tramite Axis2.

Il problema è che in questo modo ho un server a 2 livelli e non ho davvero accesso diretto dal servizio web agli oggetti condivisi, ecc ... Quello che vorrei fare è poter accedere ad alcuni Le app Red5 funzionano direttamente tramite la classe di servizio SOAP.

Suppongo che dovrò creare il server SOAP per conto mio (magari usando Axis SimpleHTTPServer o SimpleAxis2Server ??)

Qualche idea ??

Spero di essermi spiegato ... E grazie in anticipo

È stato utile?

Soluzione

Risolto !!! Invece di usare Axis2, ho usato JAX-WS, che è ciò di cui avevo veramente bisogno.

Ho creato una classe da utilizzare come WebService ed esporre i miei 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);
    }
}

Quindi ho aggiunto una chiamata a Endpoint.publish () sulla funzione di avvio di MyApplications per eseguire WebService non appena l'applicazione viene eseguita. Passo questo come parametro al costruttore Red5WS per poter accedere all'ambito delle applicazioni dal servizio 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();
    }
}

Dopo aver compilato l'app Red5 è necessario utilizzare wsgen per creare le classi WS necessarie.

wsgen –cp . my.package.Red5WS

Una volta riavviata l'app Red5 dovresti essere in grado di accedere al file WSDL del servizio web tramite:

http://localhost:8080/WebService/red5ws?WSDL
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top