使用 jersey 和 grizzly 启用 JSON

2024-03-09

我正在玩 Grizzly 托管的 Jersey,并且希望能够使用和生成 JSON,但是我在 get 请求中从服务器收到 500,并且 POST 中不支持媒体类型 我的服务器代码是

org.glassfish.jersey.server.ResourceConfig rc = new ResourceConfig();
    rc.packages("RestServer.controllers");

    final Map<String, Object> initParams = new HashMap<String, Object>();
    initParams.put("com.sun.jersey.config.property.packages", "rest");
    initParams.put("com.sun.jersey.api.json.POJOMappingFeature", "true");

    rc.addProperties(initParams);

    webServer = GrizzlyHttpServerFactory.createHttpServer(uri, rc, false);

我的 POJO 是:

@XmlRootElement
public class Dummy {

    private int id;
    private String name;

    public Dummy(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @XmlElement(name="id")
    public int getId() {
        return id;
    }

    @XmlElement(name = "name")
    public String getName() {
        return name;
    }
}

和控制器

@Path("/Dummies")
public class DummyController {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response get() {
        System.out.println("Get");
        return Response.status(Status.OK)
            .entity(new Dummy(-1, "hello"))
            .build();
    }

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response AddDummy(Dummy dummy) {
        return Response.status(Status.CREATED).entity(dummy).build();
    }
}

您正在使用 Jersey 2。在 Jersey 2 中,有is no com.sun.jersey.api.json.POJOMappingFeature and com.sun.jersey.config.property.packages,这样你就可以摆脱那些。

为了启用 JSON 到 POJO 或从 POJO 接收 JSON,我们需要一个MessageBodyWriter/MessageBodyReader(查看更多here https://jersey.java.net/documentation/latest/message-body-workers.html)。幸运的是,我们不需要自己编写这些。你只需要一个依赖项(参见here https://jersey.java.net/documentation/latest/media.html#json).

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>${jersey2.version}</version>
</dependency>

这种依赖关系将引入所需的 JacksonMessageBodyReader/MessageBodyWriter。然后配置一下就可以了

resourceConfig.register(JacksonFeature.class);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jersey 和 grizzly 启用 JSON 的相关文章

随机推荐

  • Assert.That 与 Assert.True

    更喜欢什么 Assert That obj Foo Is EqualTo true or Assert True obj Foo 对我来说 这两种资产是等价的 应该优先选择哪一种 在这种特殊情况下 没有区别 您将看到大致相同详细程度的输出
  • IntelliJ IDEA 中的“变量从未分配”警告只能“部分”抑制

    Java EE IntelliJ Idea 2016 3 我编写了一个类并声明了一个私有字段 Inject注解 我已经通过添加成功地从 检查结果 窗口中删除了 未使用的声明 通知javax inject Inject to 设置 gt 编辑
  • grunt-contrib-connect 中间件 CORS 解决方案,具有 keepalive true

    对于我的本地开发系统 我尝试使用 grunt contrib connect 为前端资产提供服务 我需要一个在 Firefox 中使用字体的跨域解决方案 服务器运行得很好 但我似乎无法设置标头 我正在使用 grunt contrib con
  • 单个元素中的多个文本节点?

    有人可以帮我看一下下面的屏幕截图并解释以下内容 到底是怎么回事 我如何以编程方式检测它 我如何以编程方式修复 摆脱它 我相信发生的事情是我在一个单一的文本节点中有多个文本节点preelement 我感觉很多年前我在MDN上读到这样的事情是可
  • android:dither="true" 不抖动,出了什么问题?

    我一直在尝试让 android 抖动活动的背景图像 到目前为止没有成功 我不知道出了什么问题 这就是我所做的 我的活动布局的根元素是 LinearLayout
  • 为什么自定义类型接受 Python 中的临时属性(而内置类型不接受)?

    我想知道为什么人们能够为自定义类型的实例创建一个新属性 新 意味着 先前未在类主体中定义 但无法为内置类型执行相同的操作在类型上 比如object本身 代码示例 gt gt gt class SomeClass object pass gt
  • Python导入模块错误

    我在项目中导入模块时遇到问题 我正在创建测试 但无法从测试文件导入我的 main 来测试应用程序的一个端点teste ex py 这是我的项目结构 backend api api init py main py testes init py
  • 如何在django模板中使用生成器方法?

    我想在 django 模板中使用 python 生成器 可以吗 例如 我有模型 它包含生成器对象 如下所示 class TestMe models Model property def gen self yield 1 yield 2 上下
  • Pycharm不显示数据库表

    更新PyCharm 版本2017 1 后 PyCharm不显示sqlite3数据库表不再存在 我已经测试了连接并且可以正常工作 In sqlite客户端我可以列出所有表并进行查询 其他人也遇到这个问题吗 在这种情况下无论如何都能解决吗 我使
  • 为 Clojure 协议提供多种实现

    我有一个公开常见数据相关函数的命名空间 get images insert user 然后 我有两个具有相同功能并以不同方式实现它们的数据库后端 他们按原样实现接口 每个后端都包含在一个命名空间中 我似乎无法找到如何完成此任务的良好解决方案
  • Java 项目中服务器和客户端包的共享资源

    我有一个 Java 项目 其中包含服务器包和客户端包 另外我还有一个图书馆包 我使用 eclipse 并将所有内容放入一个 Java 项目中 每个部分服务器 客户端和库都位于单独的包中 问题是当我导出时 所有内容都会添加到 Jar 文件中
  • 如何在 Azure Key Vault 中序列化和反序列化 PFX 证书?

    我有一堆字符串和 pfx 证书 我想将它们存储在 Azure Key Vault 中 只有允许的用户 应用程序才能获取它们 将字符串存储为 Secret 并不难 但是如何以可以检索它并反序列化为证书的方式序列化证书 X509证书2 http
  • Pandas:连接数据帧并保留重复索引

    我有两个数据框 我想将它们按列 axis 1 与内部联接连接起来 其中一个数据帧有一些重复的索引 但行不重复 我不想丢失其中的数据 df1 pd DataFrame a 1 b 2 a 1 b 3 a 2 b 4 columns a b s
  • Laravel - 计算目录的总大小?

    我试图获取 Laravel 中 directory 的总大小 到目前为止我只能使用 size 函数获取单个文件的大小 好像没有这方面的例子或者文档 任何对此的意见将不胜感激 谢谢 我认为你不能 Laravel 5 用途飞行系统 http f
  • 如何将负数转换为正数?

    如何在Python中将负数转换为正数 并保持积极的态度 gt gt gt n 42 gt gt gt n if you know n is negative 42 gt gt gt abs n for any n 42 不要忘记检查docs
  • 如何将枚举类型变量转换为字符串?

    如何使 printf 显示枚举类型变量的值 例如 typedef enum Linux Apple Windows OS type OS type myOS Linux 我需要的是类似的东西 printenum OS type My OS
  • CSS 弹跳线加载动画

    我正在尝试创建一个简单的加载动画 来回绘制一条线 但目前仅朝一个方向移动 一旦到达动画的中间 它就不会以相反的方向动画 这是我的CSS keyframes loader animation 0 width 0 49 width 100 50
  • 在TabLayout设计支持库中无法看到Tab Indicator

    我正在使用材料设计库并使用创建布局CoordinatorLayout 应用栏布局 RecyclerView and TabLayout 我的问题是我无法看到选项卡指示器Tablayout 下面是我正在使用的 xml 文件AppCompact
  • 错误的snakemake glob_wilcards 和 wildcard_constraints

    在我的 Snakemake 管道中 我试图检索正确的通配符 我研究过 wildcard constraints 和这个帖子 https stackoverflow com questions 66882849 snakemake how t
  • 使用 jersey 和 grizzly 启用 JSON

    我正在玩 Grizzly 托管的 Jersey 并且希望能够使用和生成 JSON 但是我在 get 请求中从服务器收到 500 并且 POST 中不支持媒体类型 我的服务器代码是 org glassfish jersey server Re