Como expor SharedObjects do Red5 através de SOAP
-
06-07-2019 - |
Pergunta
Edit: Obviamente a minha primeira pergunta foi realmente não é fácil de entender, espero que a resposta é útil:)
Eu tentei instalar Axis2 no servidor Red5 e tudo correu ok, eu acessei as propriedades de aplicativos Red5 de um serviço Web personalizado usando RTMPClient do Red5 e expostos-los através Axis2.
O problema é que fazê-lo dessa maneira que eu tenho um servidor de 2 níveis e eu realmente não têm acesso directo a partir do webservice aos SharedObjects, etc ... O que eu gostaria de fazer é ser capaz de acessar alguns Red5 aplicativos funções diretamente através da classe de serviço SOAP.
Suponho que terá que criar o servidor SOAP no meu próprio (talvez usando SimpleHTTPServer do Axis ou SimpleAxis2Server ??)
Todas as ideias ??
Espero me explicou ... E obrigado antecipadamente
Solução
Resolvido !!! Em vez de utilizar Axis2, tenho JAX-WS usado, que é o que eu realmente precisava.
Eu criei uma classe para usar como WebService e expor meus 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);
}
}
Então eu adicionei uma chamada para Endpoint.publish () na função MyApplications Appstart para executar o WebService assim que o aplicativo é executado. Eu passar isso como um parâmetro para o construtor Red5WS para ser capaz de âmbito aplicações de acesso do serviço de 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();
}
}
Depois de compilar o aplicativo Red5 é uma obrigação de usar o wsgen para criar as classes necessárias WS.
wsgen –cp . my.package.Red5WS
Uma vez reiniciado o aplicativo Red5 você deve ser capaz de arquivo WSDL acesso do serviço web através do:
http://localhost:8080/WebService/red5ws?WSDL