Имя сервера в ответном сообщении XML? - PullRequest
0 голосов
/ 18 января 2010

В настоящее время я разрабатываю набор веб-сервисов на Java для размещения на Axis2 , работающих поверх WebLogic 10.3.0.Эти веб-сервисы получают и возвращают SOAP-сообщения.

Поскольку у меня кластеризованная среда на WebLogic , я хотел бы иметь Имя сервера WebLogic (которое я настроил с помощью Консоль администрирования ) вернулось в теле ответного сообщения.Можно ли как-нибудь сделать это программно или с помощью конфигурации на Консоли администрирования ?

Заранее благодарен за помощь в решении этой проблемы!

1 Ответ

2 голосов
/ 18 января 2010

Вы можете получить имя сервера через localhost следующим образом:

String hostname = InetAddress.getLocalHost().getHostName();

Обновление

Вышеприведенное возвращает имя сервера, на котором он работает, поэтому будет указано имя хоста веб-службы.

Если вам нужно имя сервера перед веб-сервисом, вы можете получить его из запроса:

String hostname = request.getRemoteHost();

должен сделать трюк. Помните, что имя удаленного хоста используется клиентом сокета для настройки соединения, это не обязательно должно быть имя DNS. Если вам нужно DNS-имя, вы можете использовать:

String hostname = InetAddress.getByName(request.getRemoteAddr()).getHostName();

Обновление 2

Если вы имеете в виду не то, что относится к серверу (решение 1) или перенаправляющему прокси (решение 2), а к какому-то логическому имени кластера, вы можете определить это в своем файле web.xml как параметр контекста:

<context-param>
    <param-name>clustername</param-name>
    <param-value>OurPrettyCluster</param-value>
</context-param>

и прочитайте это в своем сервлете:

ServletContext context = getServletContext();
String clustername = context.getInitParameter("clustername");

Если это также не помогает, вам нужно обновить свой вопрос и описать конфигурацию своего кластера, потому что с предоставленной информацией сделать не намного больше.

...