我有一个输出KML数据的KML服务器,我可以在Google地球中配置为网络位置。 KML服务器使用嵌入式Jetty。
我想在Cecium下运行KML服务器,但是我需要配置Jetty以允许COR。铯从一个webbowser运行。
有许多例子w.r.t. Jettty / COR,但其中很多都没有运行,已经过时,而且还不清楚。
KML Server主程序是:
/*
** 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服务器使用多个上下文处理程序。
在这里启用COR需要做些什么?
(Jetty版本是:jetty-all-9.2.10.v20150310)
答案 0 :(得分:1)
org.eclipse.jetty.servlets.CrossOriginFilter
Jetty用于启用COR相关功能的技术仅在ServletContext
下提供,这意味着您的示例代码不使用Servlets
或{{ 1}}无法使用此过滤器。
但是,您可以让自己的ServletContext
为无servlet环境执行与COR相关的工作。 (考虑查看cougar project及其CrossOriginHandler
实现的灵感)
或者您可以切换为使用Handler
而不是ServletContextHandler
,然后在项目中使用Jetty ContextHandler
。