0

たぶんばかげた質問:私はcom.sun.net.httpserverパッケージを使ってJavaで小さなサーバーを実現しようとしています。私はサーバープログラミングを始めたばかりなので、おそらく何かが足りません。

これは次のように機能するはずです。

  • まず、24時間ごとに最近定期的に更新されるオブジェクト(HashMap)を作成します
  • 次に、受信したリクエストを処理するハンドラーがあります。この処理フェーズは、ハンドラーの外部で作成されたHashMapのコンテンツに基づいて実行されます。

擬似コード(非常に汚れたもの)

public static void main(String args[]){

  // creation of the HashMap (which has to be periodically updated)

 HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
 server.createContext("/hashmap", new Handler());
 server.start();
 }

 class Handler implements HttpHandler {
     public void handle(HttpExchange xchg) throws IOException {

         //operations which involves (readonly) the HashMap previously created
     }
 }

問題は、ハンドラーがハッシュマップを読み取れるようにする方法です。オブジェクトをパラメーターとしてハンドラーに渡す方法はありますか?

4

1 に答える 1

1

はい、ラッパークラスを使用します。

    public class httpServerWrapper{
        private HashMap map = ...;

        public httpServerWrapper(int port) {
            HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
            server.createContext("/hashmap", new Handler());
            server.start();
        }

        public static void main(String args[]){
            int port = 8000;
            new httpServerWrapper(port);
        }

        public class Handler implements HttpHandler {
            public void handle(HttpExchange xchg) throws IOException {

                map.get(...);
            }
        }
    }
于 2012-03-20T15:19:02.643 に答える