I am not an expert with Weblogic, but I suspect there may be some dependency that includes component that prevents use of Jackson. So...
On Tue, Mar 28, 2017 at 2:32 AM, Claude Libois <clibois.w...@gmail.com> wrote: > Hello, > I have been fighting since yesterday to enforce the simple pojo to me > marshalled as {rules: [...]}: > @XmlAccessorType(XmlAccessType.FIELD) > @XmlType(name = "TRules", propOrder = { > "rules" > }) > @XmlRootElement(name = "Rules") > @JsonRootName("rules") > public class TRules { > > @XmlElement(name = "Rule", required = true) > protected List<TRule> rules; > public List<TRule> getRules() { > if (rules == null) { > rules = new ArrayList<TRule>(); > } > return this.rules; > } > > } > > However, I stil receive a json response with {Rule:[]} > I have tried to use jsonRootName annotation to change things but nothing is > working. > By default weblogic is using moxy so I have enforced jackson usage by adding > JacksonJsonProvider in my application class: > @ApplicationPath("/rest") > > public class RulesApplication extends Application { > @Override > public Set<Class<?>> getClasses() { > Set<Class<?>> classes = new HashSet<Class<?>>(); > classes.add(ProxyServiceImpl.class); > classes.add(TRules.class); > classes.add(TRule.class); > classes.add(RuleRS.class); > classes.add(JacksonJsonProvider.class); > return classes; > } > } > I have tried also with JacksonFeatures/JacksonJaxbJsonProvider... > I have enforced weblogic to use my provided jackson library I have set up > prefer-applicatio-packages for com.faster in the weblogic.xml > <weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app > http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd"> > <container-descriptor> > <prefer-application-packages> > <package-name>org.slf4j.*</package-name> > <package-name>ch.qos.logback.*</package-name> > <package-name>org.jboss.logging.*</package-name> > <package-name>com.sun.xml.bind.*</package-name> > <package-name>org.glassfish.jersey.media.*</package-name> > <package-name>com.fasterxml.jackson.*</package-name> > </prefer-application-packages> > </container-descriptor> > <context-root>ref-rules-front</context-root> > </weblogic-web-app> > I have added a ton of maven dependencies because it wasn't clear for me > which one should be used: Let's see: yes, you need jackson components: - jackson-jaxrs-json-provider - jackson-databind - jackson-core (dependency of databind) - jackson-annotations (dependency of databind) of which last 2 may be brought as dependency anyway. For these version 2.8.7 makes sense. > <dependency> > <groupId>com.fasterxml.jackson.jaxrs</groupId> > <artifactId>jackson-jaxrs-json-provider</artifactId> > <version>2.8.7</version> > </dependency> > This, I think, should not be included, and may bring "wrong stuff" > <dependency> > <groupId>org.glassfish.jersey.media</groupId> > <artifactId>jersey-media-jaxb</artifactId> > <version>2.25.1</version> > <scope>test</scope> > </dependency> > <dependency> > <groupId>com.fasterxml.jackson.core</groupId> > <artifactId>jackson-annotations</artifactId> > <version>2.8.7</version> > </dependency> > <dependency> > <groupId>com.fasterxml.jackson.jaxrs</groupId> > <artifactId>jackson-jaxrs-json-provider</artifactId> > <version>2.8.7</version> > </dependency> Also remove this: it could use old (Jackson 1.x) version of things. In fact, that may be the main problem here: > <dependency> > <groupId>org.codehaus.jackson</groupId> > <artifactId>jackson-jaxrs</artifactId> > <version>1.9.13</version> > </dependency> > > > > I'm totally lost because I think that whatever I do weblogic doesn't seems > to use jackson. I have set some breakpoint in jackson code but no call. > Any help would be appreciated. > So the goal is just to have my list of rules name "rules" insteand of > "Rule". One other thing: by default, Jackson does not add such wrapper, as it's more a result of XML/JSON impedance (wrapper is needed in XML due to different data model). So while annotation `@JsonRootName` (or JAXB equivalent thereof) will indicate what wrapper to use if need be, wrapping is not added unless SerializationFeature.WRAP_ROOT_VALUE is enabled. You may already be doing that, but if not, that'd be needed. It may configured as default for `ObjectMapper`, or configured for `ObjectWriter`. I assume here former would be easier since JAX-RS provider controls use of settings. Hope this helps, -+ Tatu +- > Best Regards, > Claude > > > -- > You received this message because you are subscribed to the Google Groups > "jackson-user" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to jackson-user+unsubscr...@googlegroups.com. > To post to this group, send email to jackson-user@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "jackson-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to jackson-user+unsubscr...@googlegroups.com. To post to this group, send email to jackson-user@googlegroups.com. For more options, visit https://groups.google.com/d/optout.