2014-06-24 2 views
5

Ich benutze Atmosphere Framework und es sieht in der neuesten Version (en) der Bibliothek die Methode: BroadcasterFactory.getDefault() ist entzogen. (Und dieses Verfahren wurde im wesentlichen überall dort eingesetzt, und ich kann nicht ein Beispiel finden, wie den neuen „Weg“ verwenden)Atmosphäre Rahmen, BroadcasterFactory.getDefault() Alternative

javadoc Zustände:

@deprecated Use {@link org.atmosphere.cpr.AtmosphereConfig#resourcesFactory()} 

Allerdings kann ich nicht eine einzige Dokumentation finden, wie man die AtmosphereConfig bekommen um die resourceFactory zu erhalten (was eine Instanzmethode ist).

Kann mir jemand sagen, wie man die config .. oder das AtmosphereFramework-Objekt selbst bekommt, von dem ich die Konfiguration oder irgendein Beispiel, das up2date ist, bekomme?

Antwort

0

Nicht sicher, ob es funktioniert, aber versuchen Sie, ServletContext zu erhalten, und verwenden Sie getAttribute(AtmosphereFramework.class.getName()), um AtmosphereFramework zu erhalten. Wenn Sie Spring verwenden, versuchen Sie, AtmosphereFramework direkt zu starten.

Sie können auch BroadcasterFactory von AtmosphereResource und dann Nachschlag für Broadcaster wie:

private String path; 

private BroadcasterFactory broadcasterFactory; 

@Ready(value = Ready.DELIVER_TO.ALL) 
public void onReady(final AtmosphereResource r) { 

    System.out.println("onConnect"); 

    r.addEventListener(new AtmosphereConnectionController()); 

    if(broadcasterFactory == null){ 
     path = r.getBroadcaster().getID(); 
     broadcasterFactory = r.getAtmosphereConfig().getBroadcasterFactory(); 
    } 
} 
//later in code 
broadcasterFactory.lookup(path).broadcast("message"); 
0

Verwendung Dependency Injection. In meinem Projekt geht es so:

@MeteorService(path = "/recursos/fila-de-atendimento", interceptors = {AtmosphereResourceLifecycleInterceptor.class}) 
public class FilaDeAtendimentoResource extends HttpServlet { 

    @Inject 
    private BroadcasterFactory broadcasterFactory; 

    ... 

    /** Used for registering for a message */ 
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException { 
     ... 
     Broadcaster broadcaster = broadcasterFactory.lookup(broadcasterId, true); 
     meteor.setBroadcaster(broadcaster); 
     ... 
    } 

} 
+0

Das funktioniert nicht, für mich zumindest, weiß nicht warum, aber BroadcasterFactory wird nicht richtig injiziert und ist null. – CrazySabbath