SOAPを介してRed5のSharedObjectを公開する方法
-
06-07-2019 - |
質問
編集:明らかに、私の最初の質問は本当に簡単に理解できませんでした。答えが役に立つことを願っています:)
Red5サーバーにAxis2をインストールしようとしましたが、すべてうまくいきました。Red5のRTMPClientを使用してカスタムWebサービスからRed5アプリのプロパティにアクセスし、Axis2で公開しました。
問題は、そのようにすることで、2レベルのサーバーがあり、Webサービスから共有オブジェクトなどに直接アクセスできないということです。私がやりたいのは、一部にアクセスできるようにすることですRed5アプリは、SOAPサービスクラスを介して直接機能します。
私は自分でSOAPサーバーを作成する必要があると思います(おそらくAxisのSimpleHTTPServerまたはSimpleAxis2Serverを使用していますか?)
アイデアはありますか?
私は自分自身を説明したい...そして、事前に感謝します
解決
解決済み!!! 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);
}
}
次に、アプリケーションが実行されるとすぐにWebServiceを実行するために、MyApplications appStart関数でEndpoint.publish()の呼び出しを追加しました。これを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