プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server Webアプリケーション、サーブレット、JSP の開発
12c (12.2.1.3.0)
E90351-03
目次へ移動
目次

前
次

4 サーブレットの作成と構成

最新のサーブレット仕様の新機能と変更された機能を示し、サーブレットを作成して構成する方法を示します。

この章の内容は以下のとおりです。

サーブレットの新機能と変更された機能

これらの項では、サーブレット3.1と3.0との間のサーブレット・プログラミングのモデルおよび要件に関する変更点をまとめています。

サーブレット3.1の新機能と変更された機能

WebLogic Serverでは、サーブレット3.1仕様(http://jcp.org/en/jsr/detail?id=340を参照)をサポートしています。この仕様では、次の新機能が導入されています。

  • 非ブロッキングI/Oの読取りまたは書込みのために追加されたサポート—サーブレット3.0では非同期リクエスト処理が可能でしたが、従来のI/Oのみが許可されていました。これは、クライアント・リクエストに関連するスレッドが入出力を考慮してアイドル状態になる可能性があるため、アプリケーションのスケーラビリティが制限されていました。サーブレット3.1は、リスナーの読取りおよび書込みの非ブロッキングI/Oをサポートし、これにより、スケーラブルなアプリケーションを作成できます。

  • HTTPプロトコル・アップグレード処理—HTTP/1.1によって、クライアントはサポートしている通信プロトコルの中で使用したいものを指定できます。サーブレット3.1は、サーブレット内でHTTPプロトコル・アップグレード機能をサポートします。

  • カバーされていないHTTPメソッドを処理することによるセキュリティの拡張—deny-uncovered-http-methodsフラグはアプリケーションのweb.xmlファイルで設定することができます。この設定により、HTTPメソッドがリクエストURLに最適なURLパターンに適用される組み合されたセキュリティ制限でカバーされないリクエストURLとともに使用される際、コンテナはすべてのHTTPプロトコル・メソッドを否認します。

  • 新しいJava EE 7サーブレット・サンプル—WebLogic Serverをサンプル付きで完全にインストールすると、ソース・コードのサンプルがEXAMPLES_HOMEexamples\src\examplesディレクトリに置かれます。デフォルトのパスはORACLE_HOME\wlserver\samples\serverです。このディレクトリから、サンプル・ドメインを設定することなくソース・コードおよびServlet 3.1サンプルの手順ファイルにアクセスできます。

    ORACLE_HOME\user_projects\domains\wl_serverディレクトリには、WebLogic Serverのサンプル・ドメインが含まれています。このドメインには、アプリケーション、アプリケーションおよびOracle WebLogic Serverの動作方法を定義するXML構成ファイル、および起動スクリプトと環境スクリプトが含まれます。WebLogic Serverサンプル・コードの詳細は、『Oracle WebLogic Serverの理解』のサンプル・アプリケーションおよびサンプル・コードに関する項 を参照してください。

    • HTTPプロトコル・アップグレードAPIの使用 – クライアントが追加の通信プロトコルを指定できるようにするHTTPプロトコル・アップグレードAPIの使用方法を示します。

      EXAMPLES_HOME/examples/src/examples/javaee7/servlet/http-upgrade
    • 非ブロッキングI/O ReadListenerの使用 – 非ブロッキングの方法でリクエストから読み取るサーブレットでのReadListenerインタフェースの使用方法を示します。

      EXAMPLES_HOME/examples/src/examples/javaee7/servlet/non-blocking-io-read
    • 非ブロッキングI/O WriteListenerの使用 – 非ブロッキングの方法でリクエストに書き込むサーブレットでのWriteListenerインタフェースの使用方法を示します。

      EXAMPLES_HOME/examples/src/examples/javaee7/servlet/non-blocking-io-write
    • セッションIDの変更 – HttpServletRequest APIを使用してセッションIDを変更する方法を示します。

      EXAMPLES_HOME/examples/src/examples/javaee7/servlet/session-id-change
    • カバーされていないHTTPメソッドの処理 – カバーされていないHTTPメソッドを否認する方法を示します。

      EXAMPLES_HOME/examples/src/examples/javaee7/servlet/uncovered-http-method

サーブレット3.0の新機能と変更された機能

サーブレット3.0仕様(http://jcp.org/en/jsr/detail?id=315を参照)では、次の機能が導入されています。

  • 非同期処理: サーブレットは、データベースなどのリソースからのレスポンスを待機しなくても、そのスレッドを続行できるようになりました。つまり、スレッドはブロックされません。

  • Webモジュールのデプロイメント記述子フラグメント(Webフラグメント): web-fragment.xmlファイルでは、WEB-INF/libの下にパッケージされているライブラリJARの接続性が拡張されています。Webフラグメントとは、ライブラリまたはフレームワークJARのMETA-INFディレクトリ内に指定して組み込むことができるweb.xmlファイルの一部または全部のことです。

  • 新しいJava EE 6サーブレット・サンプル—WebLogic Serverをサンプル付きで完全にインストールすると、ソース・コードのサンプルがEXAMPLES_HOME\examples\src\examplesディレクトリに置かれます。デフォルトのパスはORACLE_HOME\wlserver\samples\serverです。このディレクトリから、サンプル・ドメインを設定することなくソース・コードおよびServlet 3.0サンプルの手順ファイルにアクセスできます

    ORACLE_HOME\user_projects\domains\wl_serverディレクトリには、WebLogic Serverのサンプル・ドメインが含まれています。このドメインには、アプリケーション、アプリケーションおよびOracle WebLogic Serverの動作方法を定義するXML構成ファイル、および起動スクリプトと環境スクリプトが含まれます。WebLogic Serverサンプル・コードの詳細は、『Oracle WebLogic Serverの理解』のサンプル・アプリケーションおよびサンプル・コードに関する項 を参照してください。

    • サーブレット、フィルタおよびリスナーのアノテーションの使用 – web.xml記述子内での定義およびマッピング・エントリを必要とすることなく、Webアプリケーション・コンポーネントをアノテーション(@WebServlet@WebListenerおよび@WebFilterなど)からのみ定義する方法を示します。

      EXAMPLES_HOME/examples/src/examples/javaee6/servlet/annotation
    • 非同期サーブレットおよびリクエスト処理 – サーブレットが非同期リクエストを処理できるとマーク付けされているサーブレット3.0の非同期処理を示します。

      EXAMPLES_HOME/examples/src/examples/javaee6/servlet/asyncServlet30
    • マルチパート・ファイルを使用したファイル・アップロードの処理 – ブラウザ・クライアントからのファイルのアップロードを処理する@MultipartConfigアノテーションの使用を示します。

      EXAMPLES_HOME/examples/src/examples/javaee6/servlet/multipartFileHandling
    • プログラムによるセキュリティの使用 – HttpServletRequestインタフェースの新しいlogin()メソッドおよびauthenticate()メソッドの使用を示し、これによりアプリケーションはプログラムによってセキュリティを制御できることを示します。

      EXAMPLES_HOME/examples/src/examples/javaee6/servlet/programmaticSecurity
    • サーブレットWebフラグメント – モジュール形式の自己完結型拡張機能をWebアプリケーションに簡単に追加できるサーブレット3.0のプラガブルな特性を示します。

      EXAMPLES_HOME/examples/src/examples/javaee6/servlet/webFragment

注意:

WebLogic Server 12.1.3以降は、サーブレット3.1仕様で定義されている標準アノテーションが推奨され、WebLogic Server固有のアノテーション(@WLServlet、@WLFilterおよび@WLInitParam)は非推奨となり、将来のリリースで削除されます。また、weblogic.servlet.http.AbstractAsyncServletのかわりに、サーブレット3.1仕様で定義されている標準非同期処理モデルを使用してください。サーブレット3.1の非同期処理の構成の詳細は、「web.xmlデプロイメント記述子の要素」「async-descriptor」を参照してください。

サーブレットの構成

Java EEメタデータ・アノテーションとデプロイメント記述子を使用してサーブレットを構成する方法、およびWebアプリケーションでサーブレット・マッピングを使用する方法について説明します。

サーブレット・アノテーション

Java EEメタデータ・アノテーションを使用すれば、標準のweb.xmlデプロイメント記述子は省略可能です。サーブレット仕様では、サーブレット、フィルタ、リスナー、タグ・ハンドラなどの特定のWebコンポーネントでアノテーションを定義できると規定されています。アノテーションを使用すると、外部リソースに対する依存関係を宣言できます。コンテナはこれらのコンポーネントのアノテーションを検出し、コンポーネントのライフサイクル・メソッドが呼び出される前に必要な依存関係を注入します。「Webコンポーネント用のWebLogicアノテーション」を参照してください。

ただし、サーブレットは、標準のWebアプリケーション・デプロイメント記述子web.xmlの複数のエントリでWebアプリケーションの一部として定義することもできます。web.xmlファイルは、WebアプリケーションのWEB-INFディレクトリにあります。

web.xmlのルートservlet要素の下の最初のエントリには、サーブレットの名前が定義され、そのサーブレットを実行するコンパイル済みクラスが指定されます。あるいは、サーブレット・クラスを指定するかわりに、JSPを指定することもできます。servlet要素には、サーブレットの初期化属性とセキュリティ・ロール用の定義も含まれています。

web.xml内のservlet-mapping要素の下の2番目のエントリには、このサーブレットを呼び出すURLパターンが定義されています。

サーブレット・マッピング

サーブレット・マッピングとは、サーブレットへのアクセス方法を制御することです。次の例は、Webアプリケーションでサーブレット・マッピングを使用する方法を示しています。これらの例には、(web.xmlデプロイメント記述子の)サーブレット構成とマッピングのセットがあり、その後にこれらのサーブレットの起動に使用するURLを示す表(表4-1を参照)があります。

例4-1 サーブレット・マッピングの例

<servlet>
  <servlet-name>watermelon</servlet-name>
  <servlet-class>myservlets.watermelon</servlet-class>
</servlet>
<servlet>
  <servlet-name>garden</servlet-name>
  <servlet-class>myservlets.garden</servlet-class>
</servlet>
<servlet>
  <servlet-name>list</servlet-name>
  <servlet-class>myservlets.list</servlet-class>
</servlet>
<servlet>
  <servlet-name>kiwi</servlet-name>
  <servlet-class>myservlets.kiwi</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>watermelon</servlet-name>
  <url-pattern>/fruit/summer/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>garden</servlet-name>
  <url-pattern>/seeds/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>list</servlet-name>
  <url-pattern>/seedlist</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>kiwi</servlet-name>
  <url-pattern>*.abc</url-pattern>
</servlet-mapping>

表4-1 url-patternと呼び出されるサーブレット

URL 呼び出されるサーブレット
http://host:port/mywebapp/fruit/summer/index.html
watermelon
http://host:port/mywebapp/fruit/summer/index.abc
watermelon
http://host:port/mywebapp/seedlist
list
http://host:port/mywebapp/seedlist/index.html

デフォルト・サーバー(構成されている場合)、またはHTTP 404エラー・メッセージ(「File not found」)。

listサーブレットが/seedlist*にマップされていた場合、listサーブレットが呼び出されます。

http://host:port/mywebapp/seedlist/pear.abc
kiwi

listサーブレットが/seedlist*にマップされていた場合、list サーブレットが呼び出されます。

http://host:port/mywebapp/seeds
garden
http://host:port/mywebapp/seeds/index.html
garden
http://host:port/mywebapp/index.abc
kiwi

ServletServletは、サーブレットのデフォルト・マッピングの作成に使用できます。たとえば、http://host:port/web-app-name/myservlet/com/foo/FooServletを使用してサーブレットを呼び出せるように/myservlet/*に対するすべてのサーブレットにマップするデフォルト・マッピングを作成するには、web.xmlファイルに以下の部分を追記します。(web.xmlファイルは、WebアプリケーションのWEB-INFディレクトリにあります。)

<servlet>
  <servlet-name>ServletServlet</servlet-name>
  <servlet-class>weblogic.servlet.ServletServlet</servlet-class>
</servlet>
<servlet-mapping> 
<servlet-name>ServletServlet</servlet-name>
  <url-pattern>/myservlet/*</url-pattern>
</servlet-mapping>

デフォルト・サーブレットの設定

各Webアプリケーションには、デフォルト・サーブレットがあります。このデフォルト・サーブレットは管理者が指定できますが、指定しない場合、WebLogic ServerではFileServletという内部サーブレットがデフォルト・サーブレットとして使用されます。

どのサーブレットでも、デフォルト・サーブレットとして登録できます。独自のデフォルト・サーブレットを作成すれば、独自のロジックを使用して、デフォルト・サーブレットに送られるリクエストの処理方法を定義できます。

設定したデフォルト・サーブレットは、FileServletに取って代わります。FileServletはほとんどのファイル(テキスト・ファイル、HTMLファイル、イメージ・ファイルなど)を提供するために使用されるので、デフォルト・サーブレットの設定は注意深く行う必要があります。デフォルト・サーブレットでこれらのファイルを提供するには、その機能をデフォルト・サーブレットに記述する必要があります。

ユーザー定義のデフォルト・サーブレットを設定するには:

  1. 「クライアントによるWebアプリケーションへのアクセス方法の構成」の説明に従い、サーブレットを定義します。

  2. 次のように、servlet-mappingにurl-pattern = "/"を付けて追加します。

    <servlet-mapping> 
    <servlet-name>MyOwnDefaultServlet</servlet-name>
    <url-pattern>/myservlet/*(</url-pattern>
    </servlet-mapping>
    
  3. FileServletで他の拡張子付きのファイルを提供する場合は、次の手順に従います。

    1. サーブレットを定義し、myFileServletなどの<servlet-name>を指定します。

    2. <servlet-class>weblogic.servlet.FileServletと定義します。

    3. <servlet-mapping>要素を使ってファイル拡張子をmyFileServletにマップします(デフォルト・サーブレット用のマッピングに追加して)。たとえば、myFileServletで.gifファイルを提供するには、*.gifmyFileServletにマップします。

      注意:

      docHomeパラメータ(このリリースで非推奨になった)が指定されていない場合、ソース・ファイル名決定時のFileServletには、SERVLET_PATHが含まれています。そのため、FileServletを/dir/*などにマップすることで、特定のディレクトリからのファイルのみを明示的に提供できます。

サーブレット初期化属性

サーブレットの初期化属性は、Webアプリケーションのデプロイメント記述子web.xmlの中のservlet要素のinit-param要素に、param-nameタグとparam-valueタグを使って定義します。web.xmlファイルは、WebアプリケーションのWEB-INFディレクトリにあります。

例:

例4-2 web.xml内のサーブレット初期化属性の構成例

<servlet>
  <servlet-name>HelloWorld2</servlet-name> 
  <servlet-class>examples.servlets.HelloWorld2</servlet-class>
  <init-param>
    <param-name>greeting</param-name> 
    <param-value>Welcome</param-value> 
  </init-param>
  <init-param>
    <param-name>person</param-name> 
    <param-value>WebLogic Developer</param-value> 
  </init-param>
</servlet>

単純なHTTPサーブレットの記述

Hello World.というメッセージを出力する単純なHTTPサーブレットを記述する手順について検討します。

これらの手順を示すサンプル・コード(HelloWorldServlet)の全文がこの項の最後にあります。JDBC、RMI、JMSなど各種のJava EEおよびWebLogic Serverサービスをサーブレットで使用する方法の詳細は、このドキュメントで後述します。

  1. 以下の適切なパッケージおよびクラスをインポートします。

    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    
  2. javax.servlet.http.HttpServletを機能拡張します。例:

    public class HelloWorldServlet extends HttpServlet{
    
  3. service()メソッドを実装します。

    サーブレットの主要な機能は、WebブラウザからのHTTPリクエストを受け取って、HTTPレスポンスを戻すことです。この処理は、サーブレットのservice()メソッドによって行われます。サービス・メソッドには、出力を生成するレスポンス・オブジェクトと、クライアントからのデータを受け取るリクエスト・オブジェクトがあります。

    ほかにも、doPost()メソッドまたはdoGet()メソッドを実装したサーブレットのサンプルを見たことがあるかもしれません。これらのメソッドは、POSTまたはGETリクエストにのみ応答するものです。service()メソッドを実装しておけば、1つのメソッドですべてのリクエスト・タイプを処理できます。(ただし、service()メソッドを実装する場合、service()メソッドの最初でsuper.service()を呼び出さない限り、doPost()メソッドまたはdoGet()メソッドを実装することはできません。)HTTPサーブレットの仕様には、他のリクエスト・タイプの処理に使用される他のメソッドも記述されていますが、これらのメソッドは全部まとめてserviceメソッドと総称されています。

    サービス・メソッドはすべて、同じパラメータ引数を取ります。HttpServletRequestは、リクエストの情報を提供し、HttpServletResponseはHTTPクライアントに応答する際にサーブレットによって使用されます。サービス・メソッドは次のようになります。

    public void service(HttpServletRequest req,
           HttpServletResponse res) throws IOException
    {
    
  4. 次のように、コンテンツ・タイプを設定します。

    res.setContentType("text/html");
    
  5. 次のように、出力に使用するjava.io.PrintWriterオブジェクトへの参照を取得します。

    PrintWriter out = res.getWriter();
    
  6. 次の例に示すように、PrintWriterオブジェクトに対しprintln()メソッドを使用して、HTMLを生成します。

    out.println("<html><head><title>Hello World!</title></head>");
    out.println("<body><h1>Hello World!</h1></body></html>");
      }
    }
    
  7. サーブレットを次のようにコンパイルします。

    1. 開発環境シェルの設定を、クラスパスとパスを正しく指定して行います。

    2. サーブレットのJavaソース・コードが格納されているディレクトリから、サーブレットが格納されているWebアプリケーションのWEB-INF/classesディレクトリに、サーブレットをコンパイルします。例:

      javac -d /myWebApplication/WEB-INF/classes myServlet.java
      
  8. WebLogic ServerにホストされるWebアプリケーションの一部として、サーブレットをデプロイします。

  9. ブラウザからサーブレットを呼び出します。

    サーブレットの呼出しに使用するURLは、以下によって決まります。

    • そのサーブレットを含むWebアプリケーションの名前、および

    • Webアプリケーションのデプロイメント記述子にマップされるサーブレットの名前。リクエスト・パラメータも、サーブレットを呼び出すURLに含まれます。

    一般的には、サーブレットのURLは以下のパターンに従います。

    http://host:port/webApplicationName/mappedServletName?parameter
    

    URLの各要素は次のように定義します。

    • hostは、WebLogic Serverが稼動しているマシンの名前。

    • portは、上記マシンがHTTPリクエストをリスニングしているポート。

    • webApplicationNameは、サーブレットが含まれるWebアプリケーションの名前。

    • parameterは、サーブレットで使用できるブラウザから送信された情報が含まれる、1つまたは複数の名前と値の組み合わせ。

    たとえば、examplesWebAppにデプロイされ、使用中のマシンで稼動しているWebLogic Serverから提供されるHelloWorldServlet (このドキュメントで使われているサンプル)をWebブラウザで呼び出す場合、次のようなURLを入力します。

    http://localhost:7001/examplesWebApp/HelloWorldServlet
    

    URLのhost:port部分は、WebLogic ServerにマップされているDNS名に置き換えることもできます。

高度な機能

基本的なサーブレットを作成する手順について検討します。サーブレットでは、さらに高度な機能を使用することもできます。

HelloWorldServletサンプルの全文

前述の手順で使用したサンプルJavaソース・コードの全文について検討します。このサンプルはHTTPリクエストにレスポンスする簡単なサーブレットです。

このドキュメントの後半では、このサンプルを拡張することにより、HTTPパラメータ、Cookie、およびセッション・トラッキングの使用方法を説明します。

例4-3 HelloWorldServlet.java

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloWorldServlet extends HttpServlet {
  public void service(HttpServletRequest req, 
                      HttpServletResponse res)
       throws IOException
  {
    // Must set the content type first
    res.setContentType("text/html");
    // Now obtain a PrintWriter to insert HTML into
    PrintWriter out = res.getWriter();
    out.println("<html><head><title>" +
                "Hello World!</title></head>");
    out.println("<body><h1>Hello World!</h1></body></html>");
  }
}

サンプルをコンパイルおよび実行するためのソース・コードおよび手順は、WebLogic Server配布キットのORACLE_HOME\wlserver\samples\server\examples\src\examples\splitdir\helloWorldEarディレクトリ内にあります。この場合、ORACLE_HOMEは、WebLogic Serverがインストールされているディレクトリを表します。WebLogic Serverサンプル・コードの詳細は、『Oracle WebLogic Serverの理解』のサンプル・アプリケーションおよびサンプル・コードに関する項を参照してください。

サーブレット・コンテナのデバッグ

WebLogic Serverサーブレット・コンテナで利用可能なデバッグ・オプションについて説明します。

アクセス・ロギングの無効化

サーブレットのアクセスのロギングは、サーバーのパフォーマンスに関してはコスト高となる場合があります。したがって、アクセス・ロギングが不要な場合は、アクセス・ログ・ファイルへのロギングを無効化することによりパフォーマンスを向上できます。

使用方法

weblogic.xmlcontainer-descriptorで指定可能なaccess-logging-disabledプロパティは、基底のWebアプリケーションのアクセス・ロギングを無効化するかどうか指定する際に使用することができます。

  • このプロパティをtrueに設定すると、アプリケーション・アクセスはロギングされません

  • このプロパティを指定しないか、falseに設定すると、アプリケーション・アクセスがロギングされます。

    注意:

    disable-access-loggingプロパティは、Webアプリケーション・レベルで機能します。したがって、このプロパティを1つのWebアプリケーションで定義しても、他のWebアプリケーションには影響しません。このプロパティは、開発モードと本番モードの両方で機能します。

    注意:

    内部アプリケーションのロギングを無効にするには、このプロパティweblogic.servlet.logging.LogInternalAppAccess=falseを使用します。

次に、アクセス・ロギングを無効化する方法の例を示します。

<?xml version="1.0" encoding="ISO-8859-1"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
<container-descriptor>
<access-logging-disabled>true</access-logging-disabled>
</container-descriptor>
</weblogic-web-app>

特定セッションのデバッグ

セッション変化の追跡は、特にレプリケートされるセッションに関して、アプリケーションの開発時に大いに役立ちます。HttpSessionAttributeListenerを利用すると、セッションの変化をWebアプリケーション・レベルで追跡できますが、開発者は、特定のリクエスト時にセッション変化を追跡するため、より詳細なデバッグ・オプションを指定する必要があります。

使用方法

wl_debug_sessionリクエスト属性または同じ名前のセッション属性は、現在のセッションにおける属性の変化をロギングすることができます。いずれかのフラグを使用すると、基底のセッションの変更がコンテナによってサーバー・ログに記録されます。

以下のいずれかの方法で特定セッションのデバッグを有効化することができます。

  • 次に示すように、wl_debug_session属性を現在のセッションに設定します。

  • session.setAttribute('wl_debug_session', Boolean.TRUE);

  • wl_debug_session 属性を、リクエスト問合せ文字列でインジケータとして使用します。wl_debug_sessionセッション属性は、コンテナにより現在のセッションに追加されます。次の例を参照してください。

    http://localhost/foocontext/foo?wl_debug_session 
    

セッションのデバッグを停止するには、単にwl_debug_session属性を削除します。

注意:

この機能は開発モードでのみ使用できます。デバッグ・メッセージの重大度は、debugレベルです。システム・ロガーがデバッグ・メッセージをサーバー・ログ・ファイルに出力できるように、ロガーの重大度はdebug以下に調整する必要があります。

リクエスト・ハンドルの処理内容の追跡

リクエスト・ハンドルの処理内容の追跡は、アプリケーション開発モードの場合に大いに役立ちます。たとえば、アプリケーションのデバッグ時には多くの情報が必要になります。これには、どのようなリクエストを受信したか、そのリクエストがどのようにディスパッチされたか、どのセッションにバインドされたか、サーブレットがいつ関与したか、どのようなレスポンスが送信されたかなどの情報が含まれます。最後に、ServletExceptionが発生したら、エラーの原因を探るため、その例外を対応するリクエストに結び付ける方法が必要となります。

使用方法

WebLogic Serverサーブレット・コンテナでは、より詳細なログ・メッセージがリクエストの処理時に提供されるため、リクエスト・フロー内の各マイルストンがより詳細に表現されます。DebugHttpロガーを有効化する以外、構成を変更する必要はありません。

このようにすると、リクエスト・ハンドルの処理内容をサーバー・ログで見つけることができます。本番モードに移行したら、DebugHttpロガーを無効化し、サーバーのパフォーマンスを最大化する必要があります。