Javax WS 上的多个参数没有注解错误,使用 "suspend" 时进行改造,如何处理?

multiple parameters with no annotation error on Javax WS and retrofit when I use "suspend" , how to handle?

我正在使用带有 javax.ws 和改造库的 Kotlin 创建一个非常基本的控制器。

我创建了一个这样的控制器...

@POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    suspend fun sayHello(request: StudentRequest): StudentResponse {

这基本上是调用另一个服务。

但是当我 运行 应用程序时,我得到这个错误:

[FATAL] Method public final java.lang.Object MyResource.sayHello(StudentRequest,kotlin.coroutines.Continuation) on resource class MyResource contains multiple parameters with no annotation. Unable to resolve the injection source.;


handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@a0bf272]},
 definitionMethod=public final java.lang.Object my.org.package.MyResource(sayHello,k**otlin.coroutines.Continuation**), 

奇怪的是有几个相似的帖子Jersey @PathParam : contains multiple parameters with no annotation

https://github.com/dropwizard/dropwizard/issues/1115

但不一样,因为我的问题是 ONLY 参数

我的正文请求没有丢失标签,此时我基本上不知道要寻找什么,知道这可能有什么问题吗?

调试后我注意到有两个参数,一个是我的,另一个是 Kotlin 注入的,当删除 "suspend" 时一切正常,但后来我不能进行我的异步调用。

要从阻塞代码中使用协程,您需要使用协程构建器(例如 launch {} or runBlocking {})。

不幸的是,在这种情况下,您不能只将 glassfish 控制器标记为可暂停函数,因为框架不知道如何处理延续。