Я столкнулся с проблемой в своем развертывании, где я использую завершаемое будущее для выполнения асинхронной задачи в сервлете tomcat (версия 8.5.23).Я знаю, что мой следующий вопрос не мог сказать много о деталях реализации, но, к сожалению, я не смог придумать простой пример, чтобы воссоздать проблему.Пожалуйста, простите меня за это.Я надеюсь, что некоторые эксперты в этой области могут дать мне совет или совет высокого уровня, который я мог бы изучить в дальнейшем.
Это продолжение моего предыдущего вопроса Выполните задачу асинхронно, но сначала ответьте .
Что я хотел бы сделать, так это «всякий раз, когда я получаю запрос от клиента, я должен запустить задачу, которая может занять час.Поэтому я немедленно отвечаю пользователю, что «задание началось» до его завершения.
Я изначально использовал AsyncContext.start()
для этого, но обнаружил, что AsyncContext не будет возвращать ответ клиенту, пока он не вызовет onComplete(AsyncEvent event)
.
Поэтому я заменил AsyncContext.start()
с CompletableFuture.runAsync(Runnable)
.Изначально мне показалось, что он работает правильно, но позже я обнаружил, что это вызывает у меня проблему.
В своей задаче я использовал com.caucho.hessian.client.HessianProxyFactory.create(Class api, String urlName)
для создания прокси-класса внутреннего интерфейса, но после использования завершаемогов будущем наступает время выполнения, которое говорит: java.lang.RuntimeException: java.lang.IllegalArgumentException: interface MyInterface is not visible from class loader
.
Буду благодарен, если кто-нибудь сможет пролить свет на проблему