Отдалечени актьори на Scala - капани

Докато пишех код на Scala RemoteActor, забелязах някои клопки:

  • RemoteActor.classLoader = getClass().getClassLoader() трябва да бъде зададено, за да се избегне "java.lang.ClassNotFoundException"
  • връзката не винаги работи поради „състезание, за което NetKernel (съоръжението, отговорно за отдалечено препращане на съобщения), което поддържа отдалечен актьор, може да се затвори, преди проксито на отдалечения актьор (по-конкретно, прокси делегат) да е имал шанс да изпрати съобщение, дистанционно указващо местния изход." (Стефан Ту)
  • RemoteActor.select не винаги връща един и същ делегат (RemoteActor.select - детерминистичен резултат?)
  • Изпращането на делегат по мрежата предотвратява нормалното затваряне на приложението (Актор за дерегистрация на RemoteActor)
  • Отдалечените актьори няма да се прекратят, ако RemoteActor.alive() и RemoteActor.register() се използват извън акта. (Вижте отговора на Магнус)

Има ли други клопки, за които програмистът трябва да знае?


person Stefan K.    schedule 21.07.2010    source източник
comment
В момента съм изправен пред клопката RemoteActor.classLoader = ..., но въпреки че имам нужда от този ред някъде, не мога да разбера къде! Може ли някой да посочи обяснение на това?   -  person Scott Morrison    schedule 25.07.2010


Отговори (1)


Ето още един; трябва да поставите извикванията си RemoteActor.alive() и RemoteActor.register() във вашия метод act, когато дефинирате своя актьор, или актьорът няма да се прекрати, когато извикате exit(); вижте Как да убия RemoteActor?

person Magnus    schedule 25.07.2010