如何使用嵌入式码头在给定地址提供特定的类路径资源?

安迪:

我正在寻找从嵌入式码头服务器公开clientacesspolicy.xml文件的方法。

我当前的尝试如下所示:

ContextHandler capHandler = new ContextHandler();
capHandler.setContextPath("/clientaccesspolicy.xml");
capHandler.setBaseResource(Resource.newClassPathResource("clientaccesspolicy.xml"));
HandlerList handlers = new HandlerList();
handlers.addHandler(capHandler);
...
httpServer.setHandler(handlers);

但是我得到一个404访问http:// localhost:9000 / clientaccesspolicy.xml

如何在Jetty中以编程方式将类路径资源公开给定URL?

谢谢,安迪

蒂姆:

您的代码不起作用,因为a ContextHandler并不能真正存储内容。稍作调整就可以完成工作,但是要做您真正想要的事情,您需要编写自己的处理程序。

该“ 之类的作品”版本:

ContextHandler capHandler = new ContextHandler();
capHandler.setContextPath("/clientaccesspolicy.xml");
ResourceHandler resHandler = new ResourceHandler();
resHandler.setBaseResource(Resource.newClassPathResource("clientaccesspolicy.xml"));
capHandler.setHandler(resHandler);

但是,该版本将其/clientaccesspolicy.xml视为目录,因此它将重定向到/clientaccesspolicy.xml/XML文件,然后显示其内容。

它看起来像是一个ResourceHandler具有url => resource的查找版本Jetty并未附带执行该操作的处理程序,但是您应该能够创建的子类,ResourceHandler然后重写getResource在那种情况下,您将不需要[或想要] ContextHandler,只需检查对“ /clientaccesspolicy.xml”的调用并将其映射到正确的ClassPath资源即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章