IBM Worklight - Как динамически изменить имя домена / хоста, к которому адаптер подключается с клиента во время запуска или выполнения?
При настройке адаптеров HTTP WL домен и порт являются частью XML-файла конфигурации адаптера и загружаются на сервер WL. Для нашего варианта использования (особенно бета-тестирования и демонстраций) URL-адрес сервера конечной точки должен быть настраиваемым для конечного пользователя. Например, те же сборки проверяются QA на тестовых окружениях, в то время как BA подключается к демонстрационной версии. У нас есть только один WL-сервер, и настройка серверов для конкретной среды невозможна.
Можно ли динамически изменить имя домена / хоста при запуске приложения или во время выполнения? В идеале было бы получить и использовать значение домена / имени хоста из выпадающего или бесплатного ввода от клиента и использовать его.
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>http</protocol>
<domain>{hostname}</domain>
<port>80</port>
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>
4 ответа
Обновление: этот ответ полезен, поэтому я оставляю его здесь для справки, но признаю, что он не правильно отвечает на этот вопрос!
Существует специальная функция Worklight, разработанная для вашего сценария (подробности в Инфоцентре см. Здесь).
Вы можете сделать это с помощью комбинации worklight.properties
и свойства JNDI.
Например, предположим, что у вас была эта настройка в вашем адаптере XML:
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>${my.adapter.protocol}</protocol>
<domain>${my.adapter.domain}</domain>
<port>${my.adapter.port}</port>
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>
Затем вы определяете значения по умолчанию для них в вашем worklight.properties
файл (в server/conf
каталог вашего проекта Worklight, и "сгорел" в .WAR
файл при сборке):
my.adapter.protocol=http
my.adapter.domain=some.host.com
my.adapter.port=80
Затем вы можете переопределить эти значения в отдельных средах, установив свойства JNDI. Например, если вы используете WebSphere Liberty, вы можете поместить это в ваш server.xml:
<jndiEntry jndiName="my.adapter.protocol" value="https"/>
<jndiEntry jndiName="my.adapter.domain" value="some.other.host.com"/>
<jndiEntry jndiName="my.adapter.port" value="8080"/>
Вы можете создать 3 адаптера: 2 адаптера, подключенных к каждому бэкэнд-серверу, и один "прокси" адаптер.
Ваше приложение будет вызывать прокси-адаптер, передавая некоторую переменную (выпадающий список). Затем прокси вызовет один из двух реальных адаптеров.
Я думаю, что если вы переопределите WL.Server.invokeHttp
так что вы можете указать доменное имя в каждом запросе вместо того, чтобы использовать имя, заданное в XML-файле, - хорошая альтернатива. Вы можете получить имя домена в качестве параметра в запросе на вызов.
Есть вопрос, который может вас заинтересовать, вы должны это проверить, потому что я не уверен, возможно ли это или нет. Переопределение адаптера Worklight Происхождение запроса
Вы не можете. Опция заключается в использовании MashUps.
Увидеть:
Идея состоит в том, чтобы адаптер реагировал на мобильное приложение, а не на этот адаптер, вызывая другой развернутый адаптер (QA, Test Env, Prod Env и т. Д.) С учетом любой логики.