Как получить глобальные атрибуты, такие как имя приложения, в свободе

Я гуглю, но мне трудно найти перевод строк для передачи методу config.getServletContext().getAttribute() в следующих двух строках. Эти строки взяты из приложения, развернутого на WAS 8.5.

String applicationName = (String)config.getServletContext().getAttribute("com.ibm.websphere.servlet.enterprise.application.name");
String serverName = (String)config.getServletContext().getAttribute("com.ibm.websphere.servlet.application.host");

Сейчас работаю/учусь на WAS Liberty.

Может быть, было бы еще лучше ссылку на ссылку для всех возможных атрибутов для свободы (если существует...)

РЕДАКТИРОВАТЬ

Извините, я не мог проверить это раньше, потому что другие ошибки в приложении блокируют выполнение, но оказалось, что эти строки для передачи в метод getAttribute действительны даже на моем локальном тестовом сервере Liberty, поэтому:

String applicationName = (String)config.getServletContext().getAttribute("com.ibm.websphere.servlet.enterprise.application.name");
String serverName = (String)config.getServletContext().getAttribute("com.ibm.websphere.servlet.application.host");

действителен для WebSphere 8.5 и ТАКЖЕ для Liberty.

Методы @Andy Guibert также подходят для получения AppName и HostName даже в более общем виде.

В любом случае, я хотел бы углубиться в эту тему и найти документацию, в которой указаны все возможные строки, которые я мог бы передать (String)config.getServletContext().getAttribute("") для получения информации в среде IBM, особенно в Liberty (если есть какая-то разница с классической Websphere)...

Но не могу найти...


person Falco    schedule 10.02.2020    source источник
comment
В java нет концепции глобальных переменных. Однако вы можете создавать общедоступные статические конечные переменные.   -  person Stultuske    schedule 10.02.2020
comment
@Falco на ваш дополнительный вопрос о том, какие значения вы можете передать (String)config.getServletContext().getAttribute(""), вы можете проверить сами, позвонив config.getServletContext().getAttributeNames()   -  person Andy Guibert    schedule 13.02.2020


Ответы (1)


Простой/стандартный способ получить имя приложения в приложении JavaEE — использовать это встроенное имя JNDI:

import javax.naming.InitialContext;
// ...

String appName = InitialContext.doLookup("java:app/AppName");

Чтобы получить имя хоста, вы, вероятно, можете просто использовать для этого JavaSE API:

InetAddress.getLocalHost().getHostName()

Вы также можете определить и найти любые произвольные переменные в server.xml, а затем найти их с помощью конфигурации MicroProfile следующим образом:

@Inject
@ConfigProperty(name = "foo", defaultValue = "bar")
String fooProperty;

Кроме того, вот руководство по настройке микропрофилей для Liberty: https://openliberty.io/guides/microprofile-config-intro.html

person Andy Guibert    schedule 10.02.2020