解決しました!!! 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