编辑:显然我的第一个问题并不容易理解,我希望答案是有用的:)
我尝试在Red5服务器上安装Axis2,一切正常,我使用Red5的RTMPClient从自定义Web服务访问Red5应用程序属性,并通过Axis2公开它们。
问题是,这样做我有一个2级服务器,我真的没有从webservice直接访问sharedobjects等...我想做的是能够访问一些Red5应用程序直接通过SOAP服务类运行。
我想我必须自己创建SOAP服务器(可能使用Axis的SimpleHTTPServer或SimpleAxis2Server ??)
任何想法??
我希望自己解释一下......并提前感谢
答案 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