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