Tomcat 8 + Spring @ EnableAsyn c = ошибка развертывания приложения - PullRequest
0 голосов
/ 30 января 2020

Я - мобильный разработчик, пытающийся разработать приложение на стороне сервера ;-(. Все идет хорошо, но сейчас я сталкиваюсь с досадной проблемой, пытаясь запустить метод асинхронно с использованием многозадачности Spring. По сути, метод отправив электронное письмо. Я читал немного о @Async весенней аннотации и пытался использовать его в своей реализации. Для этого я создал этот класс:

import java.util.concurrent.Executor;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

@Configuration
@EnableAsync
public class AsynchConfiguration 
{
    @Bean(name = "asyncExecutor")
    public Executor asyncExecutor() 
    {
         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
         executor.setCorePoolSize(3);
         executor.setMaxPoolSize(3);
         executor.setQueueCapacity(100);
         executor.setThreadNamePrefix("AsynchThread-");
         executor.initialize();
         return executor;
    }
 }

А затем в своем почтовом сервисе Я добавил новый метод:

@Async("asyncExecutor")
public void lostPetSeeAddressAsync(String nameComplete, String to, String petName, String ip, String address, String lat, String lon) throws MessagingException {
    lostPetSeeAddress(nameComplete, to, petName, ip, address, lat, lon);
}

, который просто вызывает мой предыдущий метод синхронизации для отправки электронных писем (lostPetSeeAddress). Но после этого кода Tomcat не удается развернуть приложение. Если я удаляю класс AsynchConfiguration это работает хорошо. Я попытался установить Asyn c в моей конфигурации xml, но он не работает таким же образом. Раздражающей частью этого является отсутствие сообщений об ошибках в консоли Tomcat. Возможно, кто-то может помочь мне с чем Мне нужно сделать или, по крайней мере, с некоторой подсказкой о том, как отлаживать или где получать журналы о том, где и почему происходит сбой Tomcat. Заранее спасибо. * 100 9 *

Редактировать: Это трассировка ошибок на консоли Eclipse, когда сбой развертывания:

ИНФОРМАЦИЯ: Запуск сервера за 33305 мс 30 января 2020 г. 9:37:46 org. apache .coyote .http11.AbstractHttp11Processor process ИНФОРМАЦИЯ: Ошибка синтаксического анализа заголовка HTTP-запроса Примечание: дальнейшие ошибки синтаксического анализа HTTP-заголовка будут регистрироваться на уровне DEBUG. java .lang.IllegalArgumentException: недопустимый символ, найденный в протоколе HTTP в org. apache .coyote.http11.AbstractNioInputBuffer.parseRequestLine (AbstractNioInputBuffer. java: 345) в org. apachettphoh. .process (AbstractHttp11Processor. java: 1065) в орг. apache .coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol. java: 684) в орг. apache .tomcat.util. net .NioEndpoint $ SocketProcessor.doRun (NioEndpoint. java: 1539) в орг. apache .tomcat.util. net .NioEndpoint $ SocketProcessor.run (NioEndpoint. java: 1495) в java .util.concurrent .ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1142) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 617) в орг. apache .tomcat.utilk. $ WrappingRunnable.run (TaskThread. java: 61) в java .lang.Thread.run (Поток. java: 745)

1 Ответ

0 голосов
/ 30 января 2020

Я наконец получил сообщение об ошибке и смог решить проблему. Это было вызвано циклической зависимостью c от библиотеки com.lowag ie для itext. Вот сообщение об ошибке:

Причина: java .lang.IllegalStateException: Невозможно завершить проверку аннотаций для веб-приложения [/ app] из-за ошибки StackOverflowError. Возможные причины root включают слишком низкое значение для -Xss и недопустимые циклические c зависимости наследования. Обрабатываемая иерархия классов была [org.bouncycastle.asn1.ASN1EncodableVector-> org.bouncycastle.asn1.DEREncodableVector-> org.bouncycastle.asn1.ASN1EncodableVector]

После решения проблемы com.lowag * 1011 , Spring Asyn c конфигурация работает отлично. Это не реальное решение, а подсказка для других людей. Потому что, если честно, я до сих пор понятия не имею о том, почему, добавив Asyn c Spring Configuration Rise com.lowag ie cycli c проблему зависимости. Возможно, Asyn c в Spring использует org.bouncycastle? Странно, но, возможно, другие мудрецы весны могут просветить нас.

...