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 控制器标记为可暂停函数,因为框架不知道如何处理延续。
我正在使用带有 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 控制器标记为可暂停函数,因为框架不知道如何处理延续。