在最新版本(3.0.x)Resteasy 中,我们应该使用什么 ClientResponse 和 GenericType?

2023-12-11

我正在开发Resteasy。我将应用程序的 Maven 依赖项从2.2.x to 3.0.x突然我发现大多数 API 都被弃用了。因此,此迁移对我的代码和测试用例产生了影响,因为它只是说在我的整个代码中已弃用。

我正在以我的测试用例为例: 早期版本的测试用例(在最新版本中,它已弃用,如链接中所述:ClientRequestFactory RestEasy 已弃用...还有其他 RestEasy 替代方案吗?):

import org.jboss.resteasy.util.GenericType;
import org.jboss.resteasy.client.ClientRequest;
import org.jboss.resteasy.client.ClientResponse;

@Test
    public void testGetStudent() throws Exception{
        String str = "http://localhost:8080/RESTfulExample/rest/restwebservice/list";
        ClientRequest request = new ClientRequest(str);
        ClientResponse<List<Student>> response = request.get(new GenericType<List<Student>>(){});
        List<Student> students = response.getEntity();
        System.out.println("Size : "+students.size());
    }

所以我重构我的测试用例以使用

@Test
    public void testGetStudents(){
        final String str = "http://localhost:8080/RESTfulExample/rest/restwebservice/list";
        Client client = ClientBuilder.newClient();
        // Client client = ClientBuilder.newBuilder().build();  // This also works, OR

        Response response = client.target(str).request().get();

        // This will gives us whole XML output
        String s = response.readEntity(String.class);
        System.out.println(s);

**What is the replacement of below two lines in latest version? How I can get List of Student Object ?**
//      ClientResponse<List<Student>> response = request.get(new GenericType<List<Student>>(){});
//      List<Student> students = response.getEntity();
    }

请指导。最新版本中下面两行的替换是什么?如何获取学生对象列表?

enter image description here

Edit-1:我尝试了下面,但出现以下错误: 学生.java

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "students")
public class Students {

    @XmlElement(name="student")
    private ArrayList<Student> users;

    public ArrayList<Student> getUsers() {
        return users;
    }

    public void setUsers(ArrayList<Student> users) {
        this.users = users;
    }
}

但它给了我错误:

@Test
    public void testGetStudents(){
        final String str = "http://localhost:8080/RESTfulExample/rest/restwebservice/list";
        Client client = ClientBuilder.newClient();
        // Client client = ClientBuilder.newBuilder().build();  // This also works, OR

        Response response = client.target(str).request().get();

        // This will gives us whole XML output
        String stringOutput = response.readEntity(String.class);
        System.out.println("STATUS : "+response.getStatus());
        System.out.println(stringOutput);


        Students students = response.readEntity(Students.class);
        System.out.println("Size : "+students.getUsers().size());
    }


java.lang.IllegalStateException: RESTEASY003765: Response is closed.
    at org.jboss.resteasy.specimpl.BuiltResponse.abortIfClosed(BuiltResponse.java:256)
    at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.abortIfClosed(ClientResponse.java:328)
    at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:152)
    at org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:219)
    at com.mkyong.rest.test.RestEasySampleTest.testGetStudents(RestEasySampleTest.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

Resteasy 客户端 API 已标记为已弃用JAX-RS 标准化了客户端 API。您现在可以使用等效的javax.ws.rs课程:

javax.ws.rs.client.Client client = javax.ws.rs.client.ClientBuilder.newClient();
javax.ws.rs.client.WebTarget target = client.target("someUrl");
List<Student> students = 
    target.request().get(new javax.ws.rs.core.GenericType<List<Student>>() {});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在最新版本(3.0.x)Resteasy 中,我们应该使用什么 ClientResponse 和 GenericType? 的相关文章

随机推荐

  • 发送字符串到 PHP 页面并让 PHP 页面显示该字符串

    我想要做的是让我的 PHP 页面显示我通过 System Net WebClient 通过 C 应用程序中的函数创建的字符串 确实如此 以最简单的形式 我有 WebClient client new WebClient string URL
  • C#中打印winform

    如何在 c 2008 中打印整个 winform 我的表单包含图片框 3 个文本框 使用 Visual Basic PowerPack 中的 PrintForm 控件 即使在 C 项目中 也可以从 VS 2008 的工具箱中使用它 我认为它
  • 使用 Google 地图时,应用程序因 FragmentManager Replace 而崩溃

    我使用以下代码来加载片段 具体取决于在 NavigationDrawer 上选择的项目 但是 MapFragment 内部包含 Google 地图片段 并且在第二次尝试打开它后崩溃 这是我正在使用的代码 Override public vo
  • 使用 Typescript 1.7.5 找不到全局类型“IterableIterator”

    我安装了 NPM 版本的 Typescript 1 7 5 和 angular2 beta 在 Visual Studio 2015 Update 1 中构建项目时 出现以下错误 1 gt VSTSC error TS2318 Build
  • 如何处理Python中子进程返回码得到的负数?

    这段Python脚本 cmd installer exe install this works fine the just represent many arguments process subprocess Popen cmd proc
  • PHP Implode 包裹在标签中

    一直试图用谷歌搜索答案 但似乎找不到任何东西 我有以下内容 我想把每一个都包裹起来 value在跨度标签中 但我不确定如何 I tried 如果运气不好 有人可以告诉我我哪里出了
  • 在社交网络中查找“发布者”的 O(n) 算法

    有人问我如何在社交网络中找到 发布者 的问题 假设 简化的 社交网络仅在两个用户之间具有 关注 关系 并且一个用户不能关注自己 然后 我们将 发布者 定义为被所有其他用户关注但不关注任何人的用户 更具体地说 给定这样一个邻接矩阵格式的社交网
  • 如何添加 NSSpeechSynthesizer 类参考?

    我如何添加 NSSpeechSynthesizer 类参考 我认为它是在 系统 库 框架 AppKit framework 但是 当我单击 添加现有框架 时 框架窗口中没有这样的框架名称 任何人都可以帮我做到这一点吗 VSSpeechSyn
  • 在已经跟踪大量文件的现有存储库上应用 .gitignore

    我的存储库中有一个现有的 Visual Studio 项目 我最近在我的项目下添加了一个 gitignore 文件 我假设它告诉 Git 忽略该文件中列出的文件 我的问题是 所有这些文件都已经被跟踪 据我所知 在将规则添加到该文件以忽略它之
  • Java中可以使用Semaphore实现阻塞队列吗?

    我想知道是否可以使用Semaphore来实现阻塞队列 在下面的代码中 我使用一个信号量来保护关键部分 并使用另外两个信号量对象来跟踪空槽和已填充对象的数量 public class BlockingQueue private List qu
  • 使用 Spring Data 将结果集与实体和计数进行映射的首选方法

    通常存在显示所有类别以及这些类别的使用频率的业务问题 这个问题很容易通过查询来回答 SELECT c count FROM category assignment ca LEFT JOIN category c on ca c id c i
  • 如何在另一个组件中访问一个组件的变量 [Angular]

    我是角度新手 我今天正在尝试一件简单的事情 我已经浏览了很多答案 但无法正确实施它们 我想访问一些变量filter panel in filter bar 我的两个自定义组件 但两人都不是亲子关系 尽管它们位于同一目录中 但它们是独立的 在
  • jq 在输出中打印字符

    我要打印 输出标题内的分隔符 curl s http cd0a4a ethosdistro com json yes jq c rigs 0d6b27 50dc35 version driver miner gpus miner insta
  • UINavigationController“后退按钮”自定义文本?

    的 后退按钮 UINavigationController默认情况下显示堆栈中最后一个视图的标题 有没有办法在后退按钮中添加自定义文本 From 这个链接 self navigationItem backBarButtonItem UIBa
  • 如何让查询在分页结果时转移到后续页面

    我已经浏览了网站上所有的分页问题和答案 在所有冗长的代码和面向对象的解决方案中 这段代码是最短和最简单的
  • UML 中的轮廓图是什么?

    UML 中的轮廓图是什么 更具体地说 这张图的作用是什么 我们可以用它做什么 我们可以用它解决问题 或者我们可以用它简化更多解决方案 A 剖面图允许您通过定义您自己的构造型和一些其他类似元素来定义 UML 的扩展 这个想法是针对特定领域定制
  • OS X 上 Matplotlib 图形中的表情符号

    我有一个 Matplpoltlib 的奇异任务 我需要在标签内显示表情符号 我使用的是 OS X 因此系统范围内对表情符号有很好的支持 然而 Matplotlib 却无法解决问题 目前 表情符号显示为空框 我使用的是Python 3 所以U
  • 按钮切换引导程序刷新后保持状态

    我有三个切换按钮 我想在刷新页面后保持切换状态 我读了很多东西 但不知道如何在我的情况下使用它们 这是按钮和 div
  • 将数组分解成小数组

    我正在向一系列人员发送电子邮件 我有数组中的收件人列表 但该列表最多可达 500 人 我的邮件服务器一次发送的收件人数量有限制 50 个收件人 因此 如果列表 gt 50 我需要将其分成不同的邮件 将一个数组分成 50 个数组的最佳方法是什
  • 在最新版本(3.0.x)Resteasy 中,我们应该使用什么 ClientResponse 和 GenericType?

    我正在开发Resteasy 我将应用程序的 Maven 依赖项从2 2 x to 3 0 x突然我发现大多数 API 都被弃用了 因此 此迁移对我的代码和测试用例产生了影响 因为它只是说在我的整个代码中已弃用 我正在以我的测试用例为例 早期