несколько параметров без ошибки аннотации на Javax WS и дооснащение, когда я использую «приостановить», как обработать? - PullRequest
0 голосов
/ 01 июля 2019

Я создаю очень простой контроллер с использованием Kotlin с javax.ws и библиотеками для модификации.

Я создал такой контроллер, как этот ...

@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: содержит несколько параметров без аннотации

Как я могу передать несколько параметров в restful webservice с помощью http post

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

, но это не одно и то же, потому что моя проблемас моим ONLY параметром

В запросе моего тела нет пропущенного тега, и я в принципе не знаю, что искать в этой точке, есть идеи, что может быть не так с этим?

После отладки я заметил, что есть два параметра, мой и один, введенный Kotlin, при удалении "suspend" все работает нормально, но тогда я не могу сделать свой асинхронный вызов.

1 Ответ

1 голос
/ 02 июля 2019

Чтобы использовать сопрограммы из кода блокировки, необходимо использовать конструктор сопрограмм (например, launch {} или runBlocking {}).

К сожалению, в этом случае вы можетепросто пометьте свой контроллер Glassfish как приостановленную функцию, потому что фреймворк не знает, как обращаться с продолжениями.

...