当前位置: 首页 > 面试题库 >

创建与默认Jetty的Jersey注册行为相同的ResourceConfig

通宾白
2023-03-14
问题内容

我有一个端点:

@POST
@Path("/test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String canaryTest(String JSON) {
    return JSON;
}

当我使用泽西岛在Jetty中注册时

ServletHolder holder = new ServletHolder(new ServletContainer());

一切似乎都正常。但是,如果我尝试明确指定默认配置,它将停止工作(从端点返回媒体类型错误)。即使只是将ResourceConfig的默认实例传递给ServletContainer,它也会停止工作。

ResourceConfig config = new ResourceConfig();
//config.property(x,defaultX)
//config.property(y,defaultY)
ServletHolder holder = new ServletHolder(new ServletContainer(config));

我想手动和显式地模拟默认配置行为,所以我在这里要问的是我应该如何配置ResourceConfig以便行为能够继续起作用(即,设置什么属性)

PS:我正在使用Jetty 9.2.6.v20141205和Jersey 2.14。Maven中的依赖项:

  • org.eclipse.jetty.jetty-server org.eclipse.jetty.jetty-servlet
  • org.eclipse.jetty.jetty-servlets
  • org.glassfish.jersey.containers.jersey-container-servlet-core
  • com.sun.jersey.jersey-json
  • org.glassfish.jersey.media.jersey-media-json-jackson

问题答案:

我不知道你是怎么工作的

ServletHolder holder = new ServletHolder(new ServletContainer());

我无法简单地实例化一个实例来生成一个可行的示例ServletContainer()。尽管我正准备将其与以下代码一起使用

public class TestJerseyServer {
    public static void main(String[] args) throws Exception {
        ResourceConfig config = new ResourceConfig();
        config.packages("jetty.practice.resources");
        ServletHolder jerseyServlet 
                        = new ServletHolder(new ServletContainer(config));

        Server server = new Server(8080);
        ServletContextHandler context 
                = new ServletContextHandler(server, "/");
        context.addServlet(jerseyServlet, "/*");
        server.start();
        server.join();
    }
}

使用所有依赖项(不包括com.sun.jersey:jersey-json,因为不需要)。没有其他配置。资源类

@Path("test")
public class TestResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getTest() {
        Hello hello = new Hello();
        hello.hello = "world";
        return Response.ok(hello).build();
    }

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response postHello(Hello hello) {
        return Response.ok(hello.hello).build();
    }

    public static class Hello {
        public String hello;
    }
}

jetty.practice.resources包装中。

我很好奇,看看您如何在没有 ResourceConfig

我应该提到的另一件事是jersey-container-servlet-core应该将其切换为jersey-container- servlet。前者用于2.5容器支持,但推荐用于3.x容器。以我的例子来说,它没有任何作用

卷曲

C:\>curl http://localhost:8080/test -X POST -d "{\"hello\":\"world\"}" -H "Content-Type:application/json"

world

C:\>curl http://localhost:8080/test

{"hello":"world"}



 类似资料:
  • 问题内容: 我有一个端点: 当我使用泽西岛在Jetty中注册时 一切似乎都正常。但是,如果我尝试明确指定默认配置,它将停止工作(从端点返回媒体类型错误)。即使只是将ResourceConfig的默认实例传递给ServletContainer,它也会停止工作。 我想手动和显式地模拟默认配置行为,所以我在这里要问的是我应该如何配置ResourceConfig以便行为保持正常(即要设置的属性) PS:我

  • 我有一个endpoint: 当我使用泽西岛在码头注册时 一切似乎都很好。但是如果我试图明确指定默认配置,它就会停止工作(从endpoint返回一个媒体类型错误)。即使只是将ResourceConfig的默认实例传递给ServletContainer,它也会停止工作。 我想手动和显式地模拟默认的配置行为,所以我在这里问的是我应该如何配置ResourceConfig以使行为继续工作(例如,设置什么属性

  • 问题内容: 我希望图库应用程序在单独的窗口中启动,而不是在我的应用程序中启动。我也不想选择图片,我只想打开默认的图库应用程序。有些问题与此类似,但它们都并非以独立应用程序的形式打开图库,而是始终在名为的应用程序内部 。 看这里。这是我的名为SM2的应用程序。在内部,默认的图库应用程序可见,这不是所需的行为。 如果电话上没有名为“ com.android.gallery”的软件包,则以下代码无效:

  • 问题内容: 我在公司内部有一个詹金斯服务。它使用LDAP插件(不是Active Directory插件),与我们的Active Directory集成良好,公司用户可以成功登录Jenkins。 默认情况下,当用户登录时,他们没有任何权限。由于我选择了 基于项目的矩阵授权 策略,因此潜在的授权选项列表很长,对于每个用户,我(作为Jenkins管理员)目前必须手动(繁琐地)选择我要授予的授权。 有没有

  • 本文向大家介绍Yii2中组件的注册与创建方法,包括了Yii2中组件的注册与创建方法的使用技巧和注意事项,需要的朋友参考一下  今天本来打算研究一下yii2.0的AR模型的实现原理,然而,计划赶不上变化,突然就想先研究一下yii2.0的数据库组件创建的过程。通过对yii源码的学习,了解了yii组件注册与创建的过程,并发现原来yii组件注册之后并不是马上就去创建的,而是待到实际需要使用某个组件的时候再

  • 我的表中有“created_at”列,现在我想添加“updated_at”,默认值与“created_at”相同。我正在使用laravel迁移。