gpt4 book ai didi

java - 如何将 jar 中的所有类添加到 Jersey JAXBContext 上下文

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

我有一个带有模型 DTO 的 jar 。我希望这些类(标有 @XmlRootElement )可供 Jersey 1 HTTP 客户端使用。我的初始化代码是:

ClientConfig cc = new DefaultClientConfig(MyContextResolver.class);
Client client = Client.create(cc);

MyContextResolver (它实现 ContextResolver<JAXBContext> ),我尝试过:

jaxbContext = JAXBContext.newInstance(Class1.class, Class2.class);

它可以工作,但它不是动态的(我必须手动添加类,一个接一个)。

I also used Spring and it worked ,但我想要一个 Spring 免费的解决方案。

有更好的解决办法吗?一个自动扫描 jar 中的所有类并将它们添加到上下文中的类?谢谢。

最佳答案

您是否希望拥有一个同时处理所有类的上下文?如果名称冲突,您将面临异常(exception)的风险。

为什么不简单地使用一个 ContextResolver,其工作原理如下:

Map<Class,JAXBContect> cache = new ConcurrentHashMap<>();
getContext(Class<?> type) {
JAXBContect context = cache.get(type);
if (context == null) }
context = JAXBContext.newInstance(type);
cache.put(type,context);
}
return context;
}

JAXB 将解决必要的类依赖关系(唯一的问题是子类,但这些子类应在父类中标记为 @XMLSeeAlso)。

唯一的潜在问题是您会在运行时而不是启动期间发现任何 JAXB 问题。但与此同时,任何错误只会影响依赖于错误注释的类的客户端,其余的都可以工作。

关于java - 如何将 jar 中的所有类添加到 Jersey JAXBContext 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28705988/

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