Я сейчас пытаюсь поэкспериментировать в веб-проекте с SSE.Мне пришлось обновить и включить асинхронную поддержку.Однако простой запрос GET к конечной точке подписки выдает ошибку, даже если это делается с помощью браузера.
@Path("/subscribe")
@GET
@Produces(MediaType.SERVER_SENT_EVENTS)
public void subscribe(@Context SseEventSink eSink) {
sinkList.add(eSink);
}
Если я просто ввожу запрос через браузер, это неправильно?Это проблема совместимости?как еще я могу проверить соединения SSE по сравнению с веб-сокетами, у которых есть клиент?Пока я знаю, что SseEventSinks не может быть создан с помощью конструктора.Я немного над головой с этим
Любая помощь будет принята с благодарностью!
Спасибо
Обобщенные журналы ошибок / предупреждений, показанные ниже.
ПРЕДУПРЕЖДЕНИЕ: Обнаружены следующие предупреждения: ПРЕДУПРЕЖДЕНИЕ: не удалось выполнить преобразование службы HK2 для [javax.ws.rs.sse.SseEventSink] с исключением: стек MultiException 1 из 2 java.lang.NoSuchMethodException: не удалось найти подходящий конструкторв классе javax.ws.rs.sse.SseEventSink.в org.glassfish.jersey.inject.hk2.JerseyClassAnalyzer.getConstructor (JerseyClassAnalyzer.java:192) в org.jvnet.hk2.internal.Utilities.getConstructor (Utilities.java:180) в org.jvnet.hk2.internalor.Claz.initialize (ClazzCreator.java:129)
...
в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в Java.lang.Thread.run (Thread.java:748) Стек MultiException 2 из 2 java.lang.IllegalArgumentException: были обнаружены ошибки во время реализации SystemDescriptor (реализация = javax.ws.rs.sse.SseEventSink контрактов = {javax.ws.rs.sse.SseEventSink} scope = org.glassfish.jersey.process.internal.RequestScoped qualifiers = {} descriptorType = CLASS descriptorVisibility = NORMAL метаданные = rank = 0 loader = null proxiable = null proxyForSameScope = null analysisName = null id = 0 id = null id = 198 locidentityHashCode = 282776705 reified = false) в org.jvnet.hk2.internal.SystemDescriptor.reify (SystemDescriptor.java:705) в org.jvnet.hk2.internal.ServiceLocatorImpl.reifyDescriptor (ServiceLocatorImpl.java:464)
...
ПРЕДУПРЕЖДЕНИЕ: сбой преобразования HK2 для [javax.ws.rs.sse.SseEventSink] исключение: стек MultiException 1 из 2java.lang.NoSuchMethodException: Не удалось найти подходящий конструктор в классе javax.ws.rs.sse.SseEventSink.в org.glassfish.jersey.inject.hk2.JerseyClassAnalyzer.getConstructor (JerseyClassAnalyzer.java:192) в org.jvnet.hk2.internal.Utilities.getConstructor (Utilities.java:180) в org.jvnet.hk2.internalor.Claz.initialize (ClazzCreator.java:129)
...
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:748) Стек MultiException 2 из 2 java.lang.IllegalArgumentException: при обнаружении SystemDescriptor были обнаружены ошибки (реализация= javax.ws.rs.sse.SseEventSink контракты = {javax.ws.rs.sse.SseEventSink} scope = org.glassfish.jersey.process.internal.RequestScoped
...
SEVERE: Servlet.service () для сервлета [Веб-приложение Джерси] в контексте с путем [/ Api] вызвало исключение [java.lang.IllegalArgumentException: параметр SseEventSink обнаружен, но не найден.] С первопричиной java.lang.IllegalArgumentException: параметр SseEventSink обнаружен, но не найден.по адресу org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider $ SseEventSinkInvoker.doDispatch (JavaResourceMethodDispatcherProvider.java:159) по адресу org.glassfish.jersey.server.mode.jisishoser.jerD_RD*
... на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) наjava.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:748)