You need to enable JavaScript to run this app. 如何为JRuby Warbler集成的Jetty 9.2通过XML配置启用软链接访问
优惠活动
大模型
产品
解决方案
定价
更多

如何为JRuby Warbler集成的Jetty 9.2通过XML配置启用软链接访问

Jetty 9.2.9 + Warbler 软链接访问配置指南

认知澄清

在Warbler内置Jetty的打包场景下,不需要像Jetty独立部署那样,把软链接配置绑定到全局配置中ID为wac的WebAppContext节点。Jetty自带固定配置加载规则:WEB-INF/jetty-web.xml中的所有配置,加载时会自动绑定到当前Web应用对应的WebAppContext实例,完全满足配置生效的要求。

落地配置方案

方案1:最小改动(推荐)

  • 直接在WAR包的WEB-INF目录下新建jetty-web.xml,无需修改现有web.xml、webserver.xml、webserver.properties文件
  • 文件内容按Jetty 9.2.9语法编写,完整结构如下:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "configure_9_3.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <!-- 允许软链接访问 -->
  <Call name="addAliasCheck">
    <Arg>
      <New class="org.eclipse.jetty.server.handler.AllowSymLinkAliasChecker"></New>
    </Arg>
  </Call>
</Configure>
  • Warbler默认会自动扫描WEB-INF目录下的jetty-web.xml并纳入打包范围,Jetty启动阶段会自动将AliasChecker绑定到当前WebAppContext上,不需要额外定位全局配置中的wac节点
  • 如果使用的Warbler版本较老,没有自动拷贝该文件,只需在Warbler打包配置中加一行规则,将jetty-web.xml显式加入webapp资源拷贝清单即可,无需改动其他核心配置

方案2:复用现有webserver.xml配置

  • 打开根节点为Configure class="org.eclipse.jetty.server.Server"的webserver.xml,定位到文件中定义WebAppContext的节点(即此前见到的ID为wac的或元素块)
  • 将软链接配置片段直接插入该WebAppContext定义块的内部,与块内其他给WebAppContext设置参数的、节点保持同一层级
  • 注意禁止将片段插入Server根节点层级,否则会因Server类不存在addAliasCheck方法,直接触发启动报错

失效排查要点

  • Jetty 9.2.9版本的AllowSymLinkAliasChecker是jetty-server.jar的内置类,无需额外引入第三方依赖
  • 配置生效后如果仍无法访问软链接指向的资源,优先检查系统权限:运行Jetty的系统用户必须对软链接指向的实际物理路径有读取权限,Jetty的软链接检查器只负责放行路径解析,不会绕过操作系统的权限限制
  • 不要尝试在标准web.xml中添加相关配置:web.xml是Servlet规范的通用配置文件,不支持Jetty私有的WebAppContext方法调用,写入的相关内容不会产生任何效果

内容的提问来源于stack exchange,提问作者Maja Cieślak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 00:36:11