Process実装サービス jp.ossc.nimbus.service.http.proxy.TestHttpProcessService

jp.ossc.nimbus.service.http.proxy.TestHttpProcessServiceは、ProxyServerServiceから呼び出され、HTTPリクエストを読み込み、HTTPレスポンスを返すProcess実装サービスです。

HTTPリクエストに対して、処理を行い応答を返すアクションを設定できます。

HTTPリクエストの特定には、条件式を使いますが、以下の情報を条件として使用できます。

  • HTTPリクエストヘッダ
  • HTTPメソッド
  • URLに対する正規表現マッチング
  • クエリに対する正規表現マッチング
  • リクエストボディ(POSTデータなど)に対する正規表現マッチング

アクションでは、以下の処理が行えます。

  • HTTPリクエストの内容(ヘッダ、ボディ)をファイルに出力する
  • HTTPレスポンスヘッダを設定する
  • HTTPレスポンスステータス、メッセージを設定する
  • HTTPレスポンスボディをファイルから読み込んで応答する

また、リクエスト及びレスポンスの圧縮にも対応しています。

以下に簡単なサービス定義を示します。

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE server PUBLIC
  3. "-//Nimbus//DTD Nimbus 1.0//JA"
  4. "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
  5. <server>
  6. <manager>
  7. <!-- ソケット通信を待ち受けるプロキシサービス -->
  8. <service name="TestProxyServer"
  9. code="jp.ossc.nimbus.service.http.proxy.ProxyServerService">
  10. <!-- 待ち受けるポート番号を設定する -->
  11. <attribute name="Port">8080</attribute>
  12. <!-- クライアントからのリクエストの読み込みタイムアウト[ms]を設定する -->
  13. <attribute name="SoTimeout">1000</attribute>
  14. <!-- 処理を委譲するProcessサービスのサービス名を設定する -->
  15. <attribute name="ProcessServiceName">#TestProcess</attribute>
  16. <depends>TestProcess</depends>
  17. </service>
  18. <!-- HTTPリクエスト処理を行うProcessサービス -->
  19. <service name="TestProcess"
  20. code="jp.ossc.nimbus.service.http.proxy.TestHttpProcessService">
  21. <!-- リクエスト毎の処理を設定する -->
  22. <invoke name="setAction">
  23. <!-- リクエストを特定する条件式を設定する -->
  24. <argument>
  25. @Header.URLMatcher(.*/Login).matches@
  26. </argument>
  27. <!-- 処理を行うアクションを設定する -->
  28. <argument>
  29. <object code="jp.ossc.nimbus.service.http.proxy.TestHttpProcessService$Action">
  30. <!-- レスポンスするHTMLファイルのパスを指定する -->
  31. <attribute name="ResponseBodyInputFile">./test/Login_response.html</attribute>
  32. </object>
  33. </argument>
  34. </invoke>
  35. </service>
  36. </manager>
  37. </server>


HTTP/Process