小编Ali*_*lin的帖子

配置Wildfly 10使用Jackson(作为JSON提供者)

我有一个应用程序,其中包含使用Jersey和Jackson构建的Web服务作为JSON提供程序,所有这些都在Tomcat应用程序服务器中.

我需要让这个应用程序在Wildfly 10上工作,一切都运行正常,除了没有考虑Jackson注释的webservice响应.从我读到的Wildfly使用Jettison作为默认值,在较新版本中使用Jackson2.

首选的解决方案是使RestEasy(来自Wildfly 10)使用Jackson,为此我尝试排除Jackson2和Jettison并在(META-INF\jboss-deployment-structure.xml)中依赖于Jackson,如下所示:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
    <exclusions>
        <module name="org.jboss.resteasy.resteasy-jackson2-provider"/>
        <module name="org.jboss.resteasy.resteasy-jettison-provider"/>
    </exclusions>
    <dependencies>
        <module name="org.jboss.resteasy.resteasy-jackson-provider" services="import"/>
    </dependencies>
</deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)

显然这还不够,因为表现得像以前一样.我还应该尝试什么?

更新:

由于我的应用程序应该在Tomcat(使用Jersey)和Wildfly(使用RestEasy)上工作相同,我不能依赖于在我的应用程序中使用jackte,因此我正在导入org.codehaus.jackson.

所以,我这样注册我的应用程序:

import javax.ws.rs.core.Application;
public class RestApplication extends Application
{
   @Override
   public Set<Class<?>> getClasses() {
       Set<Class<?>> classes = new HashSet<Class<?>>();

       classes.add(RestObjectMapperProvider.class);
       classes.add(GeneratedService.class);

       return classes;
   }
}
Run Code Online (Sandbox Code Playgroud)

和rest对象映射器提供者:

import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import org.codehaus.jackson.map.ObjectMapper;
@Provider
public class RestObjectMapperProvider implements ContextResolver<ObjectMapper>
{
   private final ObjectMapper objectMapper;

   public RestObjectMapperProvider()
   {
       this.objectMapper = new ObjectMapper();

       this.objectMapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
   }

   @Override …
Run Code Online (Sandbox Code Playgroud)

rest jax-rs resteasy jackson wildfly

7
推荐指数
2
解决办法
4677
查看次数

标签 统计

jackson ×1

jax-rs ×1

rest ×1

resteasy ×1

wildfly ×1