向jetty添加多个资源目录

2024-01-14

希望在 Jetty 中使用多个静态目录。当服务器运行时:

  http://localhost:8282/A
  http://localhost:8282/B 
  http://localhost:8282/C
  • A 置于 X/V/A 中
  • B 置于 Q/Z/B 中
  • C放在P/T/C中

以下失败:

    ResourceHandler resource_handler = new ResourceHandler();
    resource_handler.setWelcomeFiles(new String[]{"index.html"});
    resource_handler.setResourceBase(HTML_SITE);

    ResourceHandler resource_handler1 = new ResourceHandler();
    resource_handler1.setWelcomeFiles(new String[]{"index.html"});
    resource_handler1.setResourceBase(HTML_CLIENTZONE_SITE);

    // deploy engine
    WebAppContext webapp = new WebAppContext();

    String dir = System.getProperty("user.dir");
    webapp.setResourceBase(getWebAppPath());
    webapp.setContextPath("/");


     HandlerList handlers = new HandlerList();
    handlers.setHandlers(new Handler[]{resource_handler,resource_handler1 ,webapp,  new DefaultHandler()});
    server.setHandler(handlers);

如何添加多个静态资源目录?


从 6.1.12 开始,通过使用 WebAppContext 的基础资源的 ResourceCollection 来支持这一点:

Server server = new Server(8282);
WebAppContext context = new WebAppContext();
context.setContextPath("/");
ResourceCollection resources = new ResourceCollection(new String[] {
    "project/webapp/folder",
    "/root/static/folder/A",    
    "/root/static/folder/B",    
});
context.setBaseResource(resources);
server.setHandler(context);
server.start();

要随后打开文件,请使用 ServletContext(例如 WebAppContext),它可以是接口定义的一部分,例如:

  /**
   * Opens a file using the servlet context.
   */
  public default InputStream open( ServletContext context, String filename ) {
    String f = System.getProperty( "file.separator" ) + filename;
    return context.getResourceAsStream( f );
  }

Such as:

  InputStream in = open( context, "filename.txt" );

这将打开filename.txt如果它存在于给定目录之一中。请注意 getResourceAsStream 将返回null,而不是抛出异常,因此最好检查它:

  public default InputStream validate( InputStream in, String filename )
    throws FileNotFoundException {
    if( in == null ) {
      throw new FileNotFoundException( filename );
    }

    return in;
  }

然后您可以更新open方法如下:

return validate( context.getResourceAsStream( filename ), filename );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向jetty添加多个资源目录 的相关文章

  • 用于遍历目录/文件树和输出树作为嵌套 UL 的 PHP 脚本 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个目录 子目录和文件树 在一些但不是所有目录中 这是整个树的示例 food food drinks food drinks wa
  • 分阶段加载 spring 上下文

    这是人们会问的奇怪问题之一 为什么 所以我将从我为什么要这样做开始 然后讨论这个问题 我想更好地控制 spring 上下文的加载方式 例如 我不想同时加载域和web api 这将使资源在其依赖项准备好之前可用 也可能我需要检查某些东西的状态
  • 如何在 Python 中使用 tkinter 选择目录并存储位置

    我正在创建一个带有浏览按钮的 GUI 我只想返回路径 我一直在寻找使用如下代码的解决方案 Tkinter Button subframe text Browse command self loadtemplate width 10 pack
  • 如何从 C 代码调用 powershell 脚本

    就我而言 我需要从 c 或 c 代码源调用 powershell 脚本 发现了一些非常笨拙且不适用于 c 的链接 我只是想要一个路线图 如果可能的话 调用列出代码中的目录内容的 powershell 脚本用 C 或 C 编写的片段 C 代码
  • 启动日志“未找到事务管理器”

    当我启动jetty时 日志中出现以下行 INFO oejpw PlusConfiguration No Transaction manager found if your webapp requires one please configu
  • “PWC6345:调用 javac 时出错。”使用 Jetty WTP 插件在 Jetty 上部署 JSP 页面时出错

    我正在尝试在 Jetty 上部署 JSP 页面 使用Jetty WTP 插件 http wiki eclipse org Jetty WTP Plugin对于 Eclipse 但我收到以下错误 Jetty 好像找不到javac 我需要在 E
  • Jetty 在 JNDI 上下文中绑定数据源

    我想以编程方式将 DataSource 对象绑定到 eclipse jetty 的 JNDI 上下文 我需要用于测试目的 这是我现在的一段代码 server new Server SERVER PORT webAppContext new
  • 如何获取R中的脚本路径? [复制]

    这个问题在这里已经有答案了 可能的重复 Rscript 确定执行脚本的路径 https stackoverflow com questions 1815606 rscript determine path of the executing
  • VBA Excel 提示用户选择默认文件夹中的文件

    我想提示用户在默认文件夹中打开 Excel 文件 我不知道如何打开默认文件夹 Sub Program1 DefaultFolder C user dump FName Application GetOpenFilename If FName
  • 嵌入式 Jetty 无法识别 Spring MVC Security

    我正在开发一个启动嵌入式 Jetty 服务器的 Spring 应用程序 然后 它将 Spring MVC Web 应用程序 部署 到该 Jetty 服务器 多个控制器都运行良好 但我无法将 Spring Security 添加到 Web 应
  • 如果Jetty的密钥库中有多个证书,它如何选择?

    我们的系统中有一些代码用于自动将自签名证书生成到密钥库中 然后由 Jetty 使用 如果给定主机的密钥已经存在 那么什么也不会发生 但如果它不存在 我们会生成一个新密钥 如下所示 public void generateKey String
  • 在主屏幕上创建文件夹,我可以在其中放置一些图标在网格中

    在Android中我想做主屏幕上的文件夹以编程方式喜欢清理大师为游戏助推器所做的事情谷歌也将其所有应用程序放在一个文件夹中 我尝试使用 Live 文件夹 但它已被弃用 并且在最新的 Android 版本中也不适用于我 它是一个小部件还是我无
  • 使用Python重命名目录中的多个文件

    我正在尝试使用以下 Python 脚本重命名目录中的多个文件 import os path Users myName Desktop directory files os listdir path i 1 for file in files
  • 使用 AutoHotkey 读取目录中的文件名

    我正在寻找一种读取文件夹并将每个文件名保存到变量的方法 到目前为止 这就是我所拥有的 Loop C My Documents Notes 在我的笔记目录中 有 pdf 文件 我想读取该目录并将文件名 Homework1 pdf 保存到变量中
  • ZipArchives 存储绝对路径

    我可以使用相对路径压缩文件吗 例如 zip gt addFile c wamp www foo file txt ZIP 应该具有如下目录结构 foo gt file txt and not wamp gt www gt foo gt fi
  • 如何获取Windows批处理的父文件夹

    我正在编写一个批处理文件 我需要获取该bat文件的父文件夹 有可能吗 注意 我的意思是批处理文件的父文件夹 而不是调用该批处理的提示的当前目录 Thanks 批处理的父文件夹位于变量中 dp0位于 例子 echo off setlocal
  • 如何从 nltk 下载器中删除数据/模型?

    我在 python3 NLTK 中安装了一些 NLTK 包 通过nltk download 尝试过它们 但不需要它们 现在想删除它们 我怎样才能删除例如包large grammars来自我的 NLTK 安装 我不想删除完整的 NLTK 安装
  • php 如何统计文件夹中的文件数量?

    我想让用户能够在自己的文件夹中上传一些文件 图片 但只有当该文件夹包含的图片少于五张时才可能 如果已经有 5 张图片 脚本必须让用户知道他 她的文件夹已满 所以 我想知道php中是否有函数可以计算文件夹中的文件数量 或者 php 中有其他方
  • 监听文件夹和文件(更改)

    可以直接在 PHP 或 Node 上监听文件夹和文件的更改 通过事件 还是我需要创建自己的方法来执行此操作 Example 我需要听文件夹 user 如果我将一些文件添加到该目录中 PHP 或 Node 会收到信息并运行PathEvent
  • Clojure/Ring:使用环码头适配器,大请求会给我一个 413: FULL HEAD 错误。

    使用 Ring 的 Jetty 适配器 如果我的请求太大 我会收到 413 FULL HEAD 错误 我追踪到一个名为 headerbuffersize 的属性 但是当我尝试在 run jetty 调用中设置它时 我仍然得到 413 有没有

随机推荐