분위기 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
메서드에 추가하려고 시도했지만 브로드 캐스트 메시지가 수신되지 않습니다.
@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)
를 사용하여 :
은 또한하여 open
방법으로 다음과 같은 노력했다. 각각의 경우 클라이언트는 브로드 캐스트 메시지를받지 못했습니다. 방송사가 파괴되어 사용할 수 없다는 메시지를 한 번 들었지만 어떻게했는지 기억이 안납니다!
나는 AtmosphereHandler
을 확장하지 않으므로 similar question을 보았지만 POJO로 변환하는 방법을 모르겠습니다.
감사