2016-06-07 3 views
1

У меня есть KML-сервер, который выводит данные KML и может быть настроен как место в сети в Google Планета Земля. Сервер KML использует встроенный Jetty.Запрос на перекрестный поиск (COR) со встроенным причалом

Я хотел бы также запустить KML-сервер под Cecium, но тогда мне нужно настроить Jetty, чтобы разрешить COR. Цезий работает от webbowser.

Существует много примеров w.r.t. Jettty/COR, но многие из них не работают, устарели и просто неясны.

Основная программа KML Сервер:

/* 
    ** Create HHTP server 
    */ 
    final Server server = new Server(config.getKmlPortNumber()); 

    // Set a handler for each context 
    ContextHandlerCollection contexts = new ContextHandlerCollection(); 
    Handler[] contextHandler = new Handler[ForceIdentifier.TOTAL_IDENTIFIERS + 1]; 

    final ContextHandler context = new ContextHandler("/"); 
    context.setContextPath("/"); 
    context.setHandler(new DefaultHandler(env)); 
    contextHandler[0] = context; 

    // Set a handler for each Force Identifier. 
    for (byte i = 0; i < ForceIdentifier.TOTAL_IDENTIFIERS; i++) { 
     ContextHandler contexti = new ContextHandler("/" + i); 

     contexti.setHandler(new DefaultHandler(env, new ForceIdentifier(i))); 
     contextHandler[i + 1] = contexti; 
    } 

    contexts.setHandlers(contextHandler); 
    server.setHandler(contexts); 

    // Start the server and set some options 
    server.start(); 
    //server.dumpStdErr(); 
    server.setStopTimeout(1000); 
    server.setStopAtShutdown(true); 

    /* 
    ** Start the federate 
    */ 
    try { 
     federate.start(); 
    } catch (RTIexception ex) { 
     Main.logger.log(Level.SEVERE, null, ex); 
    } 

    /* 
    ** Stop the federate 
    */ 
    federate.stop(); 

Сервер KML использует Serveral обработчики контекста.

Что нужно сделать, чтобы включить COR здесь?

(Jetty версия: мол, все-9.2.10.v20150310)

+0

Jetty's [DefaultHandler] (http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/server/handler/DefaultHandler.html) не имеет конструктора с аргументом. Какую версию Jetty вы используете? (не Jetty 9.2.10.v20150310, это точно). Также [не используйте jetty-all.jar, он не содержит всех причалов, а также не может использоваться, только для быстрого запуска и использования документации] (https://dev.eclipse.org/mhonarc/lists/jetty -Пользователи/msg06030.html). –

ответ

1

org.eclipse.jetty.servlets.CrossOriginFilter метод, который Jetty имеет для включения связанных COR функции, доступен только под ServletContext, то есть ваш пример кода, который Безразлично» t use Servlets или ServletContext не может использовать этот фильтр.

Вы можете, однако, сделать свой собственный Handler, чтобы выполнить работу, связанную с COR, для вашей среды без сервлетов. (Рассмотрим глядя на cougar project, и его реализация CrossOriginHandler для вдохновения)

Или вы можете перейти к использованию ServletContextHandler вместо ContextHandler, а затем получить выгоду от использования Jetty CrossOriginFilter в проекте.

 Смежные вопросы

  • Нет связанных вопросов^_^