Spring boot Рассмотрите возможность определения bean-компонента с именем 'servletContext' в вашей конфигурации

У меня есть проект с несколькими модулями, и это проект tomcat. Мне нужно преобразовать его в проект весенней загрузки.

Вот файл xml с bean-компонентом: Я использовал @ImportResource("classpath:xxx.xml").

Здесь выдает исключение:


ПРИЛОЖЕНИЕ НЕ ЗАПУЩЕНО


Описание:

Параметр 0 конструктора в xxxService требует bean-компонента с именем 'servletContext', который не может быть найден.

Действие:

Рассмотрите возможность определения bean-компонента с именем 'servletContext' в вашей конфигурации.

Я понятия не имею об этой проблеме почти три дня. Пожалуйста, помогите мне, если у вас есть опыт по этому поводу, большое спасибо!

<property name = "options"> <map> <entry key = "javax.servlet.ServletContext" value-ref = "servletContext" /> <entry key = "ws.cometdURLMapping" value = "/cometd/*" /> <entry key = "maxInterval" value = "65000" /> <entry key = "timeout" value = "30000" /> <entry key = "interval" value = "15000" /> <entry key = "maxSessionsPerBrowser" value = "3" /> <entry key = "jsonContext" value = "org.cometd.server.Jackson1JSONContextServer" /> </map> </property>

Lisa.liu 11.03.2019 11:56

Ниже приведены параметры XML-файла о байе.

Lisa.liu 11.03.2019 11:56

scaAnnotationConfigApplicationContext: Исключение во время инициализации контекста — отмена попытки обновления: org.springframework.beans.factory.UnsatisfiedDependencyExcep‌​tion: Ошибка создания bean-компонента с именем «bayeuxServer», определенным в com.citi.pf.realtime.PFRealtimeServicesApplication: неудовлетворенная зависимость, выраженная через метод параметр 'bayeuxServer' 0; вложенным исключением является org.springframework.beans.factory.NoSuchBeanDefinitionExcept‌​ion: нет подходящего bean-компонента типа 'javax.servlet.ServletContext':

Lisa.liu 12.03.2019 12:22

ожидается по крайней мере 1 bean-компонент, который квалифицируется как кандидат на автопроводку. Аннотации зависимостей: {}

Lisa.liu 12.03.2019 12:22

Я удалил файл xml и создал метод bean-компонента в приложении для cometd. Ниже приведены ошибки.

Lisa.liu 12.03.2019 12:23

*************************** ПРИЛОЖЕНИЕ НЕ ЗАПУЩЕНО ******************* ******** Описание: Параметр 0 метода bayeuxServer в com.citi.pf.realtime.PFRealtimeServicesApplication требует bean-компонента типа 'javax.servlet.ServletContext', который не может быть найден. Действие: рассмотрите возможность определения bean-компонента типа 'javax.servlet.ServletContext' в вашей конфигурации.

Lisa.liu 12.03.2019 12:23
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
6
1 575
2

Ответы 2

Просто реализуйте интерфейс ServletContextAware вместо прямого автоматического подключения ServletContext

@Service
public class DummyService implements ServletContextAware {

    ServletContext servletContext;

    @Override
    public void setServletContext(ServletContext servletContext) {
        this.servletContext = servletContext;
    }
}

Интеграция CometD с Spring Boot описана здесь: https://docs.cometd.org/current/reference/#_java_server_services_integration_spring_boot.

Вы можете найти полностью рабочий пример здесь: https://github.com/cometd/cometd/blob/4.0.3/cometd-java/cometd-java-examples/cometd-java-examples-springboot/src/main/java/org/cometd/examples/spring/ загрузка/CometDApplication.java.

Привет, я пытался следовать этому документу. но есть те же проблемы, я думаю, инициализация сервлета весенней загрузки не удалась. Ошибка в деталях:

Lisa.liu 12.03.2019 02:40

s.c.a.AnnotationConfigApplicationContext: Исключение во время инициализации контекста — отмена попытки обновления: org.springframework.beans.factory.UnsatisfiedDependencyExcep‌​tion: Ошибка создания bean-компонента с именем «ACometDService», определенным в файле [ALocateCometDService.class]:

Lisa.liu 12.03.2019 02:43

Неудовлетворенная зависимость, выраженная через параметр конструктора 0; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «bayeux», определенным в ресурсе пути к классу [Acontext.xml]: невозможно разрешить ссылку на bean-компонент «servletContext» при установке свойств bean-компонента «options» с помощью ключа [ TypedStringValue: значение [javax.servlet.ServletContext], целевой тип [null]]; вложенным исключением является org.springframework.beans.factory.NoSuchBeanDefinitionExcept‌​ion: нет доступного bean-компонента с именем 'servletContext'

Lisa.liu 12.03.2019 02:44

Пример CometD Spring Boot работает. Я предлагаю вам начать с этого: скопируйте/вставьте его и заставьте его работать в вашей среде. Затем вы постепенно меняете его в соответствии с вашими потребностями. StackOverflow — неподходящее место для отладки сбоев, поэтому вы можете открыть проблему в проекте CometD: github.com/cometd/cometd/issues.

sbordet 12.03.2019 08:29

Моя загрузочная версия Spring — 1.15.13, и я отлаживаю application.java, он никогда не переходит ни в один метод @bean. Итак, я предполагаю, что мой проект не инициализирует servletContext , возможно, он не имеет отношения к серверу Cometd. Кто может мне помочь ?

Lisa.liu 12.03.2019 09:42

Другие вопросы по теме