Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个ResourceConfig,其行为方式与默认Jetty';s泽西岛注册_Java_Json_Jersey_Jetty_Jax Rs - Fatal编程技术网

Java 创建一个ResourceConfig,其行为方式与默认Jetty';s泽西岛注册

Java 创建一个ResourceConfig,其行为方式与默认Jetty';s泽西岛注册,java,json,jersey,jetty,jax-rs,Java,Json,Jersey,Jetty,Jax Rs,我有一个端点: @POST @Path("/test") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public String canaryTest(String JSON) { return JSON; } 当我用Jersey在Jetty注册时 ServletHolder holder = new ServletHolder(new ServletContainer());

我有一个端点:

@POST
@Path("/test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String canaryTest(String JSON) {
    return JSON;
}
当我用Jersey在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以使该行为保持工作(即,设置什么属性)

注:我使用的是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容器servlet核心
    应该切换到
    jersey容器servlet
    。前者用于2.5容器支持,但后者建议用于3.x容器。不过,以我的例子来说,它没有任何效果


    卷曲

    C:\>curlhttp://localhost:8080/test -X POST-d“{\“hello\”:“world\”}“-H”内容类型:application/json“


    world


    C:\>curlhttp://localhost:8080/test


    {“你好”:“世界”}


    你能用POST和@Consumes(JSON)试试吗?我不知道该怎么做,但我确信org.eclipse.jetty.servlet.ServletHolder=new org.eclipse.jetty.servlet.ServletHolder(new org.glassfish.jersey.servlet.ServletContainer())正在为我编译并启动服务器:)。也许这就是问题所在,内部?1)是的,我会试试。2) 启动服务器,但是你能找到你的资源吗?很有趣。你说得对,它不起作用。让我调查一下,我收回这句话。我在
    内容类型
    标题上有一个typeo:-D,但它与post-alsoon配合得很好。我可以看到,在您的案例中,如果您有一个webapp结构,如前所述,它将在隐式创建的
    资源配置
    上有一些初始配置。但在一个独立的结构中,我看不出这些规则将如何应用。这就是我困惑的地方。这就是为什么我说我很想看看你的代码/配置/结构或任何能帮助我理解的东西(更多的是为了我的利益,而不是你的:-)