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