WELD-001318:在WAS Liberty上使用JaxbJsonProvider和JsonProvider时存在歧义依赖关系

WELD-001318:在WAS Liberty上使用JaxbJsonProvider和JsonProvider时存在歧义依赖关系,json,jaxb,websphere-liberty,weld,Json,Jaxb,Websphere Liberty,Weld,我正在WebSphere Application server(17.0.0.1/wlp-1.0.16.cl170120170227-0220)下运行一台服务器,并添加了本文()中建议的用于升级WAS Liberty中Jackson级别的更改。我用邮递员来测试我的服务器。当我提交对象的GET请求时,它将成功完成。(添加此更改后,我的服务器可以返回XML或JSON格式的对象。)。但是,当我的服务器构建响应对象时,我现在在服务器控制台中看到了这些消息 [信息]FFDC1015I:已创建FFDC事件:

我正在WebSphere Application server(17.0.0.1/wlp-1.0.16.cl170120170227-0220)下运行一台服务器,并添加了本文()中建议的用于升级WAS Liberty中Jackson级别的更改。我用邮递员来测试我的服务器。当我提交对象的GET请求时,它将成功完成。(添加此更改后,我的服务器可以返回XML或JSON格式的对象。)。但是,当我的服务器构建响应对象时,我现在在服务器控制台中看到了这些消息

[信息]FFDC1015I:已创建FFDC事件:“org.jboss.weld.exceptions.AmbiguousResolutionException:weld-001318:无法解决以下两者之间的不明确依赖关系: -带有限定符[@Any@Default]的托管Bean[class com.ibm.zss.boundary.JaxbJsonProvider], -带有限定符[@Any@Default]com.ibm.ws.jaxrs20.cdi.component.JaxRsFactoryImplicitBeanCDICustomizer 425]的托管Bean[class com.ibm.zss.boundary.JsonProvider],位于ffdc_17.06.13_15.59.57.0.log

com.ibm.zss.boundary.JaxbJsonProvider和com.ibm.zss.boundary.JsonProvider是我根据上一篇文章中的说明添加的类

我还更新了我的server.xml以包括:

    <feature>jsonp-1.0</feature>
    <feature>jaxrs-2.0</feature>

您可以将其标记为@Specializes或@Alternative(低@Priority),这取决于您是否希望将其用于注射点?

我用@Alternative(可选)标记了这两个类,并且成功了。我不明白为什么。从我所做的研究来看,这些似乎不是需要注释的类。非常感谢。
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;

import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;

@Provider
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class JaxbJsonProvider extends JacksonJaxbJsonProvider {

}

import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;


@Provider
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class JsonProvider extends JacksonJsonProvider  {
  public JsonProvider() {
    ObjectMapper objectMapper = new ObjectMapper();
       objectMapper.setVisibility(objectMapper.getVisibilityChecker().withFieldVisibility(JsonAutoDetect.Visibility.ANY));
setMapper(objectMapper);
  }
}