gpt4 book ai didi

java - 我们可以在运行时在 Jersey 中添加资源路径吗?

转载 作者:行者123 更新时间:2023-11-29 05:12:18 25 4
gpt4 key购买 nike

我想实现一个即插即用的 web 服务,我们可以在不同的 jar 中定义不同的资源,然后将这些 jar 放在 web 服务器的资源文件夹中,服务器加载资源类并将它们注册到 jersey。我不想要停止服务器以进行资源更新或添加新的资源路径。有没有办法在运行时用 Jersey 注册资源?或者您是否建议使用另一种模式来处理此问题?

最佳答案

ResourceConfig 启动后无法修改,但可以创建一个具有更新值的新配置,然后使用新配置重新加载容器。

有一个官方示例展示了如何查看文件的更改并重新加载容器:https://github.com/jersey/jersey/tree/master/examples/reload

该示例假定类已加载到类路径中。修改示例以查看文件夹和加载新的 jar 文件应该很容易。参见 How to load a jar file at runtime

基本步骤是:

  1. 使用 ContainerLifecycleListener 获取对容器的引用
  2. 检查更新文件夹,加载所有 jar 文件
  3. 扫描资源类
  4. 创建一个新的 ResourceConfig 并添加所有资源(旧的和新的)
  5. 调用 container.update(newResourceConfig) 以使用更新后的配置

我不建议实现卸载 jar 或重新加载现有类之类的操作 - 您将不得不处理很多潜在问题。如果您需要重新加载,请寻找现有的解决方案,例如 jrebel vm 或 OSGi。

关于java - 我们可以在运行时在 Jersey 中添加资源路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27959594/

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