ファイル構成
ダウンロードしたファイルはzipで圧縮してあります。展開すると「httpserver」というディレクトリを頂点としたディレクトリ階層ができます。すぐに実行できるようにコンパイル済みのクラスファイルも添付してあります(ただし、J2SE 5.0を利用しています)。また、ソースファイルは、すべてシフトJISでエンコードしています。
「httpserver」ディレクトリ
build.xml
antのビルドスクリプトです。NetBeans 4.1が生成したファイルですが、コマンドラインからantを利用して操作することも可能です。
主なターゲットに以下のものがあります。
- clean:ビルドしたクラスファイルを削除。
- compile:「src」ディレクトリ下のソースファイルをコンパイル。
- test:「src」および「test」ディレクトリ下のソースファイルをコンパイルして、ユニットテストを実行。なお、testターゲットを実行する場合には
libs.junit.classpathプロパティで「junit.jar」を指定する必要があります。 - run:「src」ディレクトリ下のソースファイルをコンパイルし実行。
application.argsプロパティで引数を指定することができます。 - jar:「dist」ディレクトリ下にjarを作成。
C:\test\httpserver>ant test -Dlibs.junit.classpath=%JUNIT_HOME%\junit.jar
Buildfile: build.xml
-pre-init:
...
-do-test-run:
-do-test-run:
[junit] done
...
[junit] Testsuite: com.example.http.HttpServerTest
[junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 1.582 sec
[junit] ------------- Standard Output ---------------
...
[junit] done
...
「httpserver\html」ディレクトリ
テスト用のHTMLを格納してあります。「build.xml」のrunを実行する場合、work.dirプロパティでこのディレクトリをポイントしてください。
「httpserver\nbproject」ディレクトリ
NetBeans 4.1のプロジェクト設定ファイルが格納されています。
「httpserver\src\com\example\http」ディレクトリ
- HttpServer.java
- ClientService.java
- Authority.java
- Base64Util.java
HttpServerクラスが利用するクライアントとの接続を制御する機構のソースファイルです。HttpServerクラスが利用する認証機構のソースファイルです。「httpserver\test\com\example\http」ディレクトリ
- HttpServerTest.java
実行方法
前回までと異なり、スレッドの利用方法をプロパティで切り替える必要があるため、コマンドラインから以下のように生成したjarを指定して実行してください。
実行例
C:\test\httpserver>java -Dhttpsrv.thread=m -jar dist\httpserver.jar -d service type=multi thread
実行するとデフォルトではポート8800番でサービスを開始します。スレッドの利用方法はhttpsrv.threadプロパティで指定します。設定値と動作の関係は以下となります。
| 設定値 | 動作 |
| m | 単純なマルチスレッド |
| p | スレッドプール |
| s | シングルスレッド(前回までの実装と同等) |
なお、無設定時のデフォルトはスレッドプールとなり、m、p以外の値を与えるとシングルスレッドを指定したものと見なします。
引数として-dを与えると、デバッグモードで実行されるため、サービス開始時に選択された動作を標準出力へ出力します(上記の実行例の「service type=multi thread」という出力がそれにあたります)。
終了するには、Webブラウザで「http://localhost:8800/quit」を開くか、またはコマンドラインで[Ctrl]+Cを押下してください。
