如何通过SOAP公开Red5的SharedObjects

时间:2009-06-19 12:31:04

标签: java web-services soap axis2 red5

编辑:显然我的第一个问题并不容易理解,我希望答案是有用的:)

我尝试在Red5服务器上安装Axis2,一切正常,我使用Red5的RTMPClient从自定义Web服务访问Red5应用程序属性,并通过Axis2公开它们。

问题是,这样做我有一个2级服务器,我真的没有从webservice直接访问sharedobjects等...我想做的是能够访问一些Red5应用程序直接通过SOAP服务类运行。

我想我必须自己创建SOAP服务器(可能使用Axis的SimpleHTTPServer或SimpleAxis2Server ??)

任何想法??

我希望自己解释一下......并提前感谢

1 个答案:

答案 0 :(得分:0)

解决!!! 我没有使用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);
    }
}

然后我在MyApplications appStart函数上添加了对Endpoint.publish()的调用,以便在应用程序运行后立即运行WebService。我将此作为参数传递给Red5WS构造函数,以便能够从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();
    }
}

编译Red5应用程序后,必须使用wsgen创建所需的WS类。

wsgen –cp . my.package.Red5WS

重新启动Red5应用程序后,您应该能够通过以下方式访问Web服务的WSDL文件:

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