2014-11-03 15 views
12

Чтобы отлаживать HTTP-запросы во время разработки, Я бы хотел, чтобы мой сервер приложений WildFly 8 удалял HTTP-запросы, включая метод запроса и заголовки, в файл журнала. server.log будет в порядке.Дамп HTTP-запросов в WildFly 8

В источниках подсистемы HTTP WildFly, я нашел RequestDumpingHandler и соответствующий протоколирования категории io.undertow.request.dump

Однако, я не могу понять, как установить этот заголовок так, что она применяется для всех запросов, обслуживаемых моим приложением (WAR с некоторыми статическими ресурсами и обработчиком JAX-RS).

Соответствующая страница документации (Undertow web subsystem configuration) на самом деле не объясняет обработчики. Существует <handler> элемент в разделе конфигурации

<?xml version="1.0" ?> 
<server xmlns="urn:jboss:domain:2.1"> 
    ... 
    <profile> 
     ... 
     <subsystem xmlns="urn:jboss:domain:undertow:1.1"> 
     <buffer-cache name="default"/> 
     <server name="default-server"> 
      <http-listener name="default" socket-binding="http"/> 
      <host name="default-host" alias="localhost"> 
       <location name="/" handler="welcome-content"/> 
       <filter-ref name="server-header"/> 
       <filter-ref name="x-powered-by-header"/> 
      </host> 
     </server> 
     <servlet-container name="default"> 
      <jsp-config/> 
     </servlet-container> 
     <handlers> 
      <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> 
      <!-- <dump-request /> ?? or something?--> 
     </handlers> 
     <filters> 
      <response-header name="server-header" header-name="Server" header-value="WildFly/8"/> 
      <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/> 
     </filters> 
     </subsystem> 
     ... 
    </profile> 
    ... 
</server> 

, но, насколько я могу судить, только <file> и прокси, как ожидается, там (?).

Как я могу зарегистрировать полную информацию о входящих HTTP-запросах в WildFly? Я знаю, что могу установить некоторый механизм ведения журнала на уровне JAX-RS, но мне бы хотелось иметь один механизм дампа, который обрабатывает как вызовы API REST, так и статически обслуживаемые ресурсы.

ответ

25

Вам нужно будет добавить RequestDumpingHandler в цепочку обработчиков.

Как часть wildfly 8.1, это еще не возможно по-дружески.

Это улучшается в 8.2 и 9, так что вы сможете настроить, добавив что-то вроде этого:

<host name="default-host" > 
    ..... 
    <filter-ref name="request-dumper"/> 
</host> 
.... 
<filters> 
    ... 
    <filter name="request-dumper" class-name="io.undertow.server.handlers.RequestDumpingHandler" module="io.undertow.core" /> 
</filters> 

в 8,1 единственный вариант сейчас будет добавить ServletExtension http://undertow.io/undertow-docs/undertow-docs-1.2.0/#servlet-extensions

что бы добавить этот RequestDumpingHandler во внешнюю цепочку.

Выпуск FWIW 8.2 почти готов, поэтому вы можете подождать или просто создать источники для ветки 8.x.

Для добавления выше конфигурации с помощью CLI, вы можете использовать:

/subsystem=undertow/configuration=filter/custom-filter=request-dumper:add(class-name="io.undertow.server.handlers.RequestDumpingHandler", module="io.undertow.core") 
/subsystem=undertow/server=default-server/host=default-host/filter-ref=request-dumper:add 
+3

Есть ли способ сбросить, а также тело запроса/ответа с помощью этого обработчика, пожалуйста? – tarilabs

+1

@ctomc Любой способ распечатать содержимое запроса http и ответа? – Zeus

+0

@tarilabs вы выяснили решение для этого? – Zeus

0

Есть целый ряд людей, спрашивающих, как получить все тело HTTP логаут, а не только заголовки.

Кажется, ответ существует: https://8bitplatoon.blogspot.com/2017/02/dumping-http-requests-and-responses-in.html

Короче говоря, если эта ссылка не выживает, простое дополнение к вашему standalone.xml будет делать трюк:

<system-properties> <property name="com.sun.xml.ws.transport.http.HttpAdapter.dump" value="true"/> </system-properties>

я добавил это после <extensions>...</extensions> и до <management>...</management>, перезапустил wildfly и смог получить полные тела HTTP в моих журналах сервера (server.log в моем случае).

Это не влияет на барабанщик «Undertow» или зависит от него, насколько я могу судить, вы можете сделать одно, другое или и то, и другое.

+0

не работает на wildfly 10 – spy

+0

Моя среда была на wildfly 10, и ссылка в моем ответе на то же самое. Вы перезапустили wildfly после внесения изменений? –

+0

не работает со мной на wildfly 10, я тоже перезапустил wildfly – Abdullah

Смежные вопросы