Работа в распределенной архитектуре

Эти разделы описывают особенности разработки, относящейся к распределенной архитектуре. Далее представлен список основных факторов, которые необходимо учитывать при создании совместимого с распределенной архитуктурой модуля:

  • У каждого контекста есть три пути: локальный путь, соседний путь и удаленный путь. Их различия указаны ниже.
  • Каждый раз, когда вы получаете путь контекста в качестве строки, вы должны тщательно выбирать между использованием методов getPath() и getRemotePath(), зависящих от того, как используется путь строки. В большинстве случаев, но не всегда, getPath() будет верным выбором.
  • Есть разница между методами get() от Context и ContextManager. Второй имеет доступ к локальному пути, в то время как первый имеет доступ к удаленному пути, тем самым методы возвращают разные результаты.
  • Разработка кода на стороне сервера и получение Context могут привести к созданию контекста прокси, который соединяется с удаленным соседним устройством в распределенной установке. Поэтому даже самые простые вызовы метода могут быть значительно отложены или даже остановлены из-за сетевых проблем.

Контексты в распределенной архитектуре

У интерфейса Context есть количество методов, которые связаны с функционированием в распределенной инсталляции. Представленный далее список описывает некоторые из методов:

  • Метод isDistributed() определяет, является ли на самом деле экземпляр класса, включающего интерфейс Context, контекстом прокси, у которого есть удаленное одноранговое устройство в распределенной архитектуре.
  • Метод getPath() всегда возвращает путь контекста в локальное дерево контекстов.
  • getPeerPath() возвращает путь контекста на сервер сразу же, соединяясь с текущим сервером (текущим одноранговым устройством сервера). Очень редко есть необходимость использовать этот метод в пользовательском коде.
  • getRemotePath() возвращает путь контекста на сервер, где он был определен. Этот вывод отличается от вывода getPeerPath() только в случае трех и более уровней серверов распределенной архитектуры. В нераспределенной архитектуре выводы этих двух методов равняются getPath().
  • Методы getRemoteRoot() и getPeerRoot() возвращают информацию о локальных корневых путях контекстов ветвей, которые соединены в распределенной архитектуре. Пока javadocs предоставляет необходимое количество деталей, нет необходимости вызывать эти методы напрямую.