Frage

Ich habe einen Remote-Schauspieler (Client), die mit einem anderen Remote-Akteure (Server) registriert und dann später Deregistrierung (mit einem Shutdown-Hook). Doch obwohl der Server nimmt die Deregistrierung, die tatsächliche sender Eigenschaft ist ein verschiedene Channel-Objekt ; so in meinem Server-Logs habe ich:

  

Registered new client [scala.actors.Channel@158e282]; supporting 1 clients
  De-registered client [scala.actors.Channel@1caf0b6]; supporting 1 clients

Wie kann ich (auf der Serverseite) bestimmen, dass dies der gleiche Client-Schauspieler war, der mit mir ursprünglich registriert? Offensichtlich konnte ich jeden Kunden mit seinen eigenen UUID tränken aber ich frage mich, ob es einen einfacheren Weg?

War es hilfreich?

Lösung

Von einer Diskussion auf der Mailingliste scala Benutzer, so scheint es, dass dies ohne eine alternative Art von Client-ID (wie UUID) nicht sofort möglich ist. Wenn Sie die self Referenz vom Client in Ihrer Registrierung Objekt senden, erhalten Sie einen ObjectNotSerializable Fehler.

Andere Tipps

Explizit den Absender zu Ihrer Nachricht hinzuzufügen. Verwenden Sie RemoteActor.select einen scala.actors.remote.Proxy zu bekommen. Verwenden Sie seine Methode toString den Absender zu identifizieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top