Имя хоста журнала разрешено в CXF

У меня есть клиент веб-службы Java, который использует CXF. Сервер имеет 10+ возможных ips, которые разрешаются через динамический dns. У меня правильно настроен jvm, чтобы не кэшировать DNS.

Мой вопрос в том, что у меня есть требование, чтобы мне нужно было зарегистрировать на клиенте полезную нагрузку с IP-адресом, на который она была доставлена. Регистрация только имени хоста не будет работать, поскольку разрешение имени хоста для IP постоянно меняется.


person Daniel Spivey    schedule 11.06.2010    source источник


Ответы (1)


Я бы предложил взять источник CXF LoggingInInterceptor из: http://svn.apache.org/repos/asf/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java

и обновите его в соответствии с вашими потребностями. В частности, вам нужно будет извлечь HttpServletREquest из сообщения и выяснить, как получить IP-адрес, чтобы добавить его в журналы. Версия CXF не зависит от протокола (подойдет для JMS или других) и, таким образом, не выполняет никаких специфичных для HTTP действий, для которых требуется HttpServletRequest.

person Daniel Kulp    schedule 11.06.2010
comment
Это было бы на стороне сервера, но мне нужно на стороне клиента. Я не ясно дал понять это в своем вопросе, поэтому я обновил свой вопрос, чтобы отразить это. Извините за путаницу! - person Daniel Spivey; 11.06.2010
comment
По сути, это будет тот же ответ, но возьмите код для LoggingOutInterceptor, возьмите HttpURLConnection из сообщения и возьмите из него все, что сможете. - person Daniel Kulp; 15.06.2010
comment
В итоге я получил HttpURLConnection, а затем использовал отражение для доступа к закрытым/защищенным членам, чтобы получить доступ к объекту InetAddress. HttpURLConnection httpUrlConnection = (HttpURLConnection)message.get(http.connection); используйте отражение для этого... httpUrlConnection.delegate.http.serverSocket.inetAddress Спасибо за помощь! - person Daniel Spivey; 24.06.2010