Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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 异步jersey REST API中使用Swagger文档的NullPointerException_Java_Multithreading_Rest_Asynchronous_Jersey 2.0 - Fatal编程技术网

Java 异步jersey REST API中使用Swagger文档的NullPointerException

Java 异步jersey REST API中使用Swagger文档的NullPointerException,java,multithreading,rest,asynchronous,jersey-2.0,Java,Multithreading,Rest,Asynchronous,Jersey 2.0,我在Jersey 2.10应用程序的REST API中工作,它有一个异步(长轮询)端点,还有几个是CRUD操作的正常同步端点 例如,异步服务如下所示: @GET @Path("poll/{groupId}") @ManagedAsync public void poll(@Suspended final AsyncResponse asyncResponse, @NotNull @PathParam("groupId") Integer groupId) { asyncResponse.

我在Jersey 2.10应用程序的REST API中工作,它有一个异步(长轮询)端点,还有几个是CRUD操作的正常同步端点

例如,异步服务如下所示:

@GET
@Path("poll/{groupId}")
@ManagedAsync
public void poll(@Suspended final AsyncResponse asyncResponse, @NotNull @PathParam("groupId") Integer groupId) {
    asyncResponse.setTimeout(SERVICE_TIMEOUT, TimeUnit.SECONDS);

    List<User> users= Collections.emptyList();

    while (users.isEmpty() && asyncResponse.isSuspended()) {
        users= userService.findUsersByGroupId(groupId);

        if (users.isEmpty()) {
            try {
                Thread.sleep(POLL_INTERVAL);
            } catch (InterruptedException ex) {}
        }
    }

    asyncResponse.resume(users.toArray(new TestView[0]));
}   
我最初认为它与新的servlet定义有关,以使Swagger正常工作:

<servlet>
    <servlet-name>SwaggerConfig</servlet-name>
    <servlet-class>com.compuware.ruxit.synthetic.api.configuration.SwaggerJaxrsConfig</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

昂首阔步
com.compuware.ruxit.synthetic.api.configuration.SwaggerJaxrsConfig
2.

我尝试将
true
添加到SwaggerConfig servlet和Jersey servlet定义中(当您使用ManagedAsync注释时,这不是必需的,但我尝试了一下)。但是它没有帮助。

发现我使用的招摇过市的maven依赖项:

    <dependency>
        <groupId>com.wordnik</groupId>
        <artifactId>swagger-jersey2-jaxrs_2.10</artifactId>
        <version>1.3.5</version>
    </dependency>

com.wordnik
swagger-jersey2-jaxrs_2.10
1.3.5
对jersey容器servlet核心有依赖关系,但对于比我在jersey依赖关系中已有的版本更旧的版本,当我使用2.10时,它是2.1。Maven正在使用它,并覆盖我的jersey应用程序所需要的

我所做的只是排除这种可传递依赖:

    <dependency>
        <groupId>com.wordnik</groupId>
        <artifactId>swagger-jersey2-jaxrs_2.10</artifactId>
        <version>1.3.5</version>
        <exclusions>
            <exclusion>
                <artifactId>jersey-container-servlet-core</artifactId>
                <groupId>org.glassfish.jersey.containers</groupId>
            </exclusion>
        </exclusions>
    </dependency>

com.wordnik
swagger-jersey2-jaxrs_2.10
1.3.5
jersey容器servlet核心
org.glassfish.jersey.containers
更新之后,到目前为止,例外情况不再出现

    <dependency>
        <groupId>com.wordnik</groupId>
        <artifactId>swagger-jersey2-jaxrs_2.10</artifactId>
        <version>1.3.5</version>
        <exclusions>
            <exclusion>
                <artifactId>jersey-container-servlet-core</artifactId>
                <groupId>org.glassfish.jersey.containers</groupId>
            </exclusion>
        </exclusions>
    </dependency>