配置Wildfly 10以使用Jackson(作为JSON提供程序)

阿林

我有一个应用程序,该应用程序具有以Jersey和Jackson作为JSON提供程序构建的Web服务,所有这些都在Tomcat应用程序服务器中。

我需要使该应用程序在Wildfly 10上运行,并且一切正常,除了未考虑Jackson批注的Web服务响应之外。从我的阅读中,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>

显然,这还不够,因为它的行为与以前一样。我还应该尝试什么?

更新:

由于我的应用程序在Tomcat(使用Jersey)和Wildfly(使用RestEasy)上都应能正常工作,因此我不能依靠在应用程序内部使用resteasy中的jackson来导入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;
   }
}

其余对象映射器提供程序:

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
   public ObjectMapper getContext(Class<?> type)
   {
       return this.objectMapper;
   }
}

我正在使用Gradle构建我的应用,以下是Jackson依赖项:

compile group: 'org.codehaus.jackson', name: 'jackson-jaxrs', version: '1.9.+'

由于在Tomcat(Jersey)下使用了注释,因此我的猜测是在Wildfly中未考虑到排除项。除了检查响应之外,还有什么方法可以检查考虑了哪个JSON Provider?

阿林

解决的办法是将排除项和依赖项放在子部署中,而不是像我所做的那样部署标签。

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<sub-deployment name="axis.war">
    <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>
</sub-deployment>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Wildfly中配置Jackson?

使用数据源进行Wildfly配置

如何在Wildfly 10中配置数据源?

如何配置Glassfish 5使用Moxy作为默认提供程序?

如何使用VisualVM CPU配置文件Wildfly10?

如何使用Spring Boot修改Wildfly / JBoss配置

启动和配置WildFly服务器,并在1次maven运行中使用wildfly-maven-plugin部署应用程序

如何配置wildfly以使用EclipseLink?

如何在resteasy中配置wildfly与ClientBuilder一起使用https?

具有Java EE / Wildfly的单页应用程序:服务器端配置

Wildfly的RabbitMQ配置

使用Oracle配置Liferay 7.0和WIldfly

这里不允许使用Wildfly子系统配置属性

如何在Wildfly群应用程序中使用YAML配置自定义主类

Spring Boot:使用WildFly的standalone.xml中的数据库配置

如何使用重定向配置Wildfly负载平衡

使用Galleon配置Wildfly。缺少批次(jberet)

Wildfly 8.1找不到logback.xml-使用默认配置

是否可以将JBoss / Wildfly数据源配置为使用更改的客户机凭证?

使用MockExpressionManager进行Camunda Process Engine配置以实现Wildfly

使用curl脚本从以wildfly的域模式配置的所有服务器中移除战争/战争

Spring Boot Jackson的自动配置链接错误Wildfly

如何将Wildfly 9.0.2配置为在NetBeans 8.1下使用EclipseLink

如何使用Wildfly和hazelcast-jca配置Hazelcast分布式地图

将Nginx配置为Wildfly Web应用程序的反向代理

JBPM 6.5 Oracle配置(Wildfly10)| jbpm-console部署失败

命令行是以编程方式配置 wildfly 10 的唯一方法吗?

如何在wildfly swarm中为SMTP邮件配置出站套接字绑定以使用yaml?

使用 Thorntail / Wildfly Swarm 配置 db2 数据源