我想实现一个即插即用的Web服务,我们可以在不同的jar中定义不同的资源,只需将这些jar放在Web服务器的资源文件夹中,服务器就可以加载资源类并将其注册到jersey.I don&#39 ; t想要停止服务器以进行资源更新或添加新资源路径。 有没有办法在运行时使用泽西注册资源? 或者您是否建议另一种处理此问题的模式?
答案 0 :(得分:4)
启动后无法修改ResourceConfig
,但您可以使用更新的值创建一个新的,然后使用新配置重新加载容器。
有一个官方示例显示如何查看文件以进行更改并重新加载容器:https://github.com/jersey/jersey/tree/master/examples/reload
该示例假定类已经在类路径中加载。应该很容易修改示例以观察文件夹并加载新的jar文件。见How to load a jar file at runtime
基本步骤是:
ContainerLifecycleListener
获取对容器的引用ResourceConfig
并添加所有资源(新旧)container.update(newResourceConfig)
以使用您的更新配置我不建议实现卸载jar或重新加载现有类的东西 - 你必须处理很多潜在的问题。如果您需要重新加载,请查找现有的解决方案,如jrebel vm或OSGi。
答案 1 :(得分:-1)
我用@Path("/{subResources:.*}")
这回归任何可能性
并使用此属性@Context private UriInfo uriInfo;
获取值
并使用subResources
String path = uriInfo.getPathParameters().getFirst("subResources");
值
使用此字符串可以拆分或使用正则表达式。