大気0.7.2を使用して、私のブロードキャストの範囲を制限することに問題があります。大気要求スコープ付きブロードキャスト
私はopen
メソッドを使用しているジャージーPOJOを持っており、ブロードキャスタを非ウェブサービスクラスに渡したいと思います。これは、WAR層とEJB層の分離を可能にするためです。
@Path("/")
public class MyJerseyPojo {
@Context
private Broadcaster broadcaster;
@GET
@Suspend
public String open() {
Manager.register(/* Session ID */, new NonWebservice(this.broadcaster));
return "";
}
}
public class NonWebService implements Sender {
private Broadcaster broadcaster;
public NonWebService(Broadcaster b) {
this.broadcaster = b;
}
@Override
public void send(String thing) {
this.broadcaster.broadcast(thing);
}
}
アイデアは、その更新イベントがsend
を呼び出しますであり、これは中断し、応答をクライアントに通知します。各クライアントは別々の放送事業者と関連している必要があります。
問題は、このソリューションはすべてのクライアントに同じブロードキャスタを使用することです。私はをopen
メソッドに追加しようとしましたが、ブロードキャストメッセージは受信されません。
私もopen
方法で次のように試してみました:
@GET
@Suspend
public String open() {
Broadcaster b = BroadcasterFactory.getDefault().get(JerseyBroadcaster.class, UUID.randomUUID());
b.setScope(Broadcaster.SCOPE.REQUEST);
Manager.register(/* Session ID */, new NonWebservice(b));
}
これは@Suspend
または@Suspend(scope = Suspend.SCOPE.REQUEST)
のいずれかを使用して、動作しませんでした。いずれの場合も、クライアントはブロードキャストメッセージを受信しませんでした。私は放送局が破壊されて使用できないというメッセージを受け取りましたが、私はこれをどのようにしたのか覚えていません!
私はsimilar questionを見ましたが、私はそれを私のPOJOにどのように翻訳するのか分かりません。AtmosphereHandler
を拡張していません。
おかげ