Как выставить SharedObjects Red5 через SOAP - PullRequest
0 голосов
/ 19 июня 2009

Редактировать: Очевидно, мой первый вопрос не был действительно легок для понимания, я надеюсь, что ответ будет полезным:)

Я попытался установить Axis2 на сервер Red5, и все прошло нормально, я получил доступ к свойствам приложения Red5 из пользовательской веб-службы с помощью RTMPClient Red5 и открыл их через Axis2.

Проблема в том, что при этом у меня есть двухуровневый сервер, и у меня нет прямого доступа от веб-сервиса к разделяемым объектам и т. Д. Я хотел бы получить доступ к некоторым Приложения Red5 работают напрямую через класс обслуживания SOAP.

Полагаю, мне придется создать сервер SOAP самостоятельно (возможно, с помощью Axis SimpleHTTPServer или SimpleAxis2Server ??)

Есть идеи ??

Надеюсь, я все объяснил ... И заранее спасибо

1 Ответ

0 голосов
/ 22 июня 2009

Решено !!! Вместо использования Axis2 я использовал JAX-WS, который мне действительно нужен.

Я создал класс для использования в качестве WebService и выставил свои 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 () для функции appStart MyApplications, чтобы запустить WebService сразу после запуска приложения. Я передаю это как параметр конструктору 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
...