Java 异步jersey REST API中使用Swagger文档的NullPointerException
我在Jersey 2.10应用程序的REST API中工作,它有一个异步(长轮询)端点,还有几个是CRUD操作的正常同步端点 例如,异步服务如下所示: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.
@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>