gpt4 book ai didi

java - 如何告诉 jetty 将部分 jar 文件提取到其上下文临时位置

转载 作者:行者123 更新时间:2023-12-01 09:09:38 25 4
gpt4 key购买 nike

我已将 Jetty 嵌入到我的 Java 应用程序中,并创建了一个可执行的 jar 文件。当我从 cmd 执行 jar 文件时,jetty 服务器启动。我在 Jetty 服务器启动类中定义了以下内容。

protected void configureWebApp() throws IOException {
File webAppDir=new File(getClass().getProtectionDomain().getCodeSource().getLocation());

WebAppContext context = new WebAppContext(webAppDir.getPath(), "/");
resetTempDirectory(context, currentDir);
context.setInitParameter("development", "false");
server.setHandler(context);
}

protected void resetTempDirectory(WebAppContext context, File currentDir) throws IOException {
File workDir;
if (workPath != null) {
workDir = new File(workPath);
} else {
workDir = new File(currentDir, "work");
}
FileUtils.deleteDirectory(workDir);
context.setTempDirectory(workDir);
}

当从 cmd webAppDir 设置路径指向我的应用程序 jar 时。因此 jetty 会将所有 jar 内容提取到其临时目录中。看起来我浪费了资源并减慢了应用程序的启动速度。

在我的 jar 中,它有一个 webApp 文件夹,其中包含与网络相关的内容。我的问题是,

  1. 我如何指示 jetty 只将 webApp 文件夹 提取到临时目录?
  2. 我可以关闭 jetty 提取到临时目录并写入我的自己的方法来提取我需要的文件夹并将该文件夹指向 jetty temp目录。我不确定这是否是一个好主意。

我是 jetty 新手,请让我知道如何做到这一点。

.

最佳答案

所以您不想允许 Servlet Spec 临时目录执行其操作,但仍使用 Servlet Spec?

参见prior answer on how the temp directory works .

选项#1

这是嵌入式jetty,跳过WebAppContext(及其Servlet规范强制行为)并通过处理程序(如ServletContextHandler)配置所有内容。

您将失去一些“发现”组件的能力,并且没有字节码扫描,但您将拥有最终的控制权,并且启动将以亚秒计时进行测量。

选项#2

如果这只是一个启动问题,请忽略临时目录问题,在部署之前运行 servlet list 的quickstart 生成,并使用(预构建的)快速启动元数据启动 WebAppContext。

关于java - 如何告诉 jetty 将部分 jar 文件提取到其上下文临时位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41001870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com