Как выставить общие объекты Red5 через SOAP
-
06-07-2019 - |
Вопрос
Редактировать:Очевидно, что мой первый вопрос было не очень легко понять, я надеюсь, что ответ окажется полезным :)
Я попытался установить Axis2 на сервер Red5, и все прошло нормально, я получил доступ к свойствам приложения Red5 из пользовательского веб-сервиса, используя RTMPClient Red5, и предоставил их через Axis2.
Проблема в том, что при выполнении этого таким образом у меня есть сервер 2 уровней, и у меня действительно нет прямого доступа из веб-сервиса к sharedobjects и т.д...Что я хотел бы сделать, так это иметь возможность доступа к некоторым функциям Red5 apps непосредственно через класс SOAP service.
Я полагаю, мне придется создать SOAP-сервер самостоятельно (возможно, используя SimpleHTTPServer от Axis или SimpleAxis2Server??)
Есть какие-нибудь идеи??
Надеюсь, я все объяснил сам...И заранее благодарю
Решение
Решено!!!Вместо того чтобы использовать Axis2, я использовал JAX-WS, что мне действительно было нужно.
Я создал класс для использования в качестве веб-сервиса и предоставления доступа к моим 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);
}
}
Затем я добавил вызов Endpoint.publish() в функцию MyApplications AppStart для запуска веб-сервиса сразу после запуска приложения.Я передаю это в качестве параметра конструктору Red5WS, чтобы иметь возможность доступа к области приложений из веб-службы:
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();
}
}
После компиляции приложения Red5 необходимо использовать wsgen для создания необходимых классов WS.
wsgen –cp . my.package.Red5WS
После перезапуска приложения Red5 вы сможете получить доступ к файлу WSDL веб-службы через:
http://localhost:8080/WebService/red5ws?WSDL