gpt4 book ai didi

jackson - Jboss 7.1.1 - Jackson ContextResolver 仅适用于一个部署

转载 作者:行者123 更新时间:2023-12-04 15:13:12 31 4
gpt4 key购买 nike

我有两个我想在 Jboss 7.1.1 上部署的其余 web 应用程序。服务器。

两个应用程序中的 Rest 请求都会生成和使用 Json。我使用 jackson provider 来序列化和反序列化对象。

现在,我需要为每个 web 应用程序自定义 ObjectMapper 配置。
所以为了解决这个问题,我添加了实现 ContextResolver 的 @Provider 类。每个项目一个。铁。我的一个类(class)看起来像这样:

@provider
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class JacksonConfig implements ContextResolver<ObjectMapper> {
private final ObjectMapper objectMapper;
public JacksonConfig()
{
objectMapper = new ObjectMapper();
objectMapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
}
@Override
public ObjectMapper getContext(Class<?> objectType) {
return objectMapper;
}
}

当我在 jboss 上仅部署其中一个项目时,它运行良好。当我尝试部署两者时,只有第一个初始化的项目使用定义的 objectMapper。另一个从不从 ContextResolver 类调用 getContext 方法。我能做错什么?

编辑!:

经过大量试验,我决定将解析 json 的方法从 jackson 更改为 staxon。我希望至少这种方法会奏效。但不是......序列化在两个部署的应用程序上都能完美运行。但同样,不知何故 jboss 决定在反序列化过程中使用 jackson 而不是 staxon。再次总是我在部署后首先调用的应用程序运行良好。但是第二个使用 jackson (不知道为什么......)它调用异常。总是...

Jboss有问题吗?可能我只是做错了什么,但我不知道在哪里。有人知道我应该在哪里看吗?

最佳答案

看起来我找到了解决这个问题的方法。
这是resteasy的已知问题,可以通过内置选项删除:

为了解决这个问题,我只需要在我的项目的 web.xml 中添加参数:

<context-param>
<param-name>resteasy.use.deployment.sensitive.factory</param-name>
<param-value>false</param-value>
</context-param>

我在 Resteasy jira 中找到了这个解决方案.任何 jboss 或 resteasy 相关文档中都没有信息对我来说真的很奇怪......

关于jackson - Jboss 7.1.1 - Jackson ContextResolver<ObjectMapper> 仅适用于一个部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14731607/

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