Sun Httpserver: доступ из обработчика к объекту, созданному извне - PullRequest
0 голосов
/ 15 июля 2011

Возможно глупый вопрос: я пытаюсь реализовать небольшой сервер на Java с пакетом com.sun.net.httpserver. Я нахожусь в самом начале серверного программирования, поэтому, возможно, я что-то упускаю.

Это должно работать так:

  • сначала создается объект (HashMap), который будет обновляться каждые 24 часа каждые 100 часов
  • тогда будет обработчик, который будет обрабатывать полученные запросы. Эта фаза обработки выполняется на основе содержимого 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
     }
 }

Вопрос: как разрешить моему обработчику читать Hashmap? Есть ли способ передать объект в качестве параметра обработчику?

1 Ответ

1 голос
/ 20 марта 2012

Да, с классом обёртки:

    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(...);
            }
        }
    }
...