如何在没有web.xml的情况下使用jersey 2.0和servlet 3.0启用FEATURE_POJO_MAPPING?

时间:2013-07-12 19:31:18

标签: java jackson servlet-3.0 jersey-2.0

我想在接收JSON时使用@JsonAnySetter功能来收集未知数,所以我将带注释的方法添加到我的类(使用@XmlRootElement注释)和

<init-param>
  <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
  <param-value>true</param-value>
</init-param>

到我的web.xml。这很好。

我决定尝试摆脱我的web.xml。

我把班级改为

import org.glassfish.jersey.server.ResourceConfig;

@ApplicationPath("/services")
public class ListingRS extends ResourceConfig {

    public ListingRS() {
        packages("com.onlineimage.totalproperties");
    }

并且一切正常,但永远不会调用@JsonAnySetter。

我尝试添加getFeatures(),如我在示例中找到的那样

public ListingRS() {
    packages("com.onlineimage.totalproperties");
    getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);
}

但是getFeatures()无法识别,我认为它是Jersey 1.x?

我把它改成了

public ListingRS() {
    packages("com.onlineimage.totalproperties");
    getProperties().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);
}

但我没有JSONConfiguration的导入,我无法弄清楚要用Jersey 2.0导入什么。此外,我不确定getProperties()是否是正确的方法。

我的Gradle库我正在使用

List compileLibraries =['org.glassfish.jersey.core:jersey-common:2.0',
                        'org.glassfish.jersey.core:jersey-server:2.0']

问题的根源是,我想在我的类上使用@XmlRootElement进行简单的xml转换,并使用@JsonAnySetter来处理未知数。 如果我不启用JSONConfiguration.FEATURE_POJO_MAPPING,则永远不会调用@JsonAnySetter方法。

假设我在上面没有做出可怕的错误,如何在没有web.xml文件的情况下启用JSONConfiguration.FEATURE_POJO_MAPPING?

0 个答案:

没有答案