Ich habe eine Anwendung, die Webservices mit Jersey und Jackson als JSON-Anbieter erstellt hat, alles in einem Tomcat-Anwendungsserver.Konfigurieren Sie Wildfly 10, um Jackson (als JSON-Provider) zu verwenden
Ich muss diese Anwendung auf Wildfly 10 arbeiten lassen und alles funktioniert gut, neben der Webservice-Antwort, die die Jackson-Anmerkungen nicht berücksichtigt. Von dem, was ich gelesen habe, verwendete Wildfly Jettison als Standard und in der neueren Version wird Jackson2 verwendet.
Die bevorzugte Lösung wäre, RestEasy (von Wildfly 10) Jackson zu verwenden und dafür versuchte ich Jackson2 und Jettison auszuschließen und eine Abhängigkeit zu Jackson herzustellen (META-INF \ jboss-deployment-structure.xml) , wie unten:
<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>
Offenbar ist dies nicht genug, da verhält sich wie zuvor. Was sollte ich noch versuchen?
UPDATE:
Da meine Anwendung auf beiden Tomcat (mit Jersey) und Wildfly (mit Resteasy) den gleichen Arbeit soll ich nicht mit Jackson von Resteasy in meiner Anwendung verlassen kann, also bin ich m Importieren org.codehaus.jackson
.
Also, melde ich meine Anwendung wie folgt aus:
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;
}
}
Und Rest Objekt Mapper Anbieter:
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;
}
}
Ich baue meine app mit Gradle und unten ist die Jackson Abhängigkeit:
compile group: 'org.codehaus.jackson', name: 'jackson-jaxrs', version: '1.9.+'
Da unter Tomcat (Jersey) die Annotation in Betracht gezogen werden, wäre meine Vermutung, dass ich Bei Wildfly werden meine Ausschlüsse nicht berücksichtigt. Gibt es eine Möglichkeit, neben der Überprüfung der Antwort zu prüfen, welcher JSON-Anbieter berücksichtigt wurde?
weiterhin Sie Jersey verwenden oder planen Sie Jax-RS/Resteasy über die Verwendung? – teacurran