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

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

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

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


ПРИЛОЖЕНИЕ НЕ ЗАПУСКАЕТСЯ


Описание:

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

Действие:

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

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


person Lisa.liu    schedule 11.03.2019    source источник
comment
‹Имя свойства = параметры› ‹map› ‹ключ входа = javax.servlet.ServletContext value-ref = servletContext /› ‹ключ входа = ws.cometdURLMapping value = / cometd / * /› ‹ключ входа = maxInterval value = 65000 /› ‹Ключ входа = значение тайм-аута = 30000 /› ‹ключ входа = значение интервала = 15000 /› ‹ключ входа = значение maxSessionsPerBrowser = 3 /› ‹ключ входа = значение jsonContext = org.cometd.server.Jackson1JSONContextServer /› ‹/map›   -  person Lisa.liu    schedule 11.03.2019
comment
Ниже приведены параметры файла xml о Bayeux.   -  person Lisa.liu    schedule 11.03.2019
comment
scaAnnotationConfigApplicationContext: исключение во время инициализации контекста - отмена попытки обновления: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем 'bayeuxServer', определенным в com.citi.pf.realtime.PFRealtimeServicesServicesServices 'параметр 0; вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет подходящего bean-компонента типа 'javax.servlet.ServletContext':   -  person Lisa.liu    schedule 12.03.2019
comment
ожидается по крайней мере 1 bean-компонент, который квалифицируется как кандидат autowire. Аннотации зависимостей: {}   -  person Lisa.liu    schedule 12.03.2019
comment
Я удалил XML-файл и создал метод bean-компонента в приложении для cometd. Ниже приведены ошибки.   -  person Lisa.liu    schedule 12.03.2019
comment
************************** ПРИЛОЖЕНИЕ НЕ ЗАПУСКАЕТСЯ ******************* ******** Описание: Параметр 0 метода bayeuxServer в com.citi.pf.realtime.PFRealtimeServicesApplication требовал bean-объекта типа javax.servlet.ServletContext, который не удалось найти. Действие: Рассмотрите возможность определения bean-компонента типа javax.servlet.ServletContext в вашей конфигурации.   -  person Lisa.liu    schedule 12.03.2019


Ответы (2)


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

@Service
public class DummyService implements ServletContextAware {

    ServletContext servletContext;

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

person StasKolodyuk    schedule 11.03.2019

Интеграция 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/boot/CometDApplication.java.

person sbordet    schedule 11.03.2019
comment
Привет, я пытался следовать этому документу. но есть те же проблемы, я предполагаю, что инициализация сервлета весенней загрузки не удалась. Ошибка деталей: - person Lisa.liu; 12.03.2019
comment
s.c.a.AnnotationConfigApplicationContext: исключение во время инициализации контекста - отмена попытки обновления: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем «ACometDService», определенным в файле [ALocateCometDService.class]: - person Lisa.liu; 12.03.2019
comment
Неудовлетворенная зависимость, выраженная через параметр конструктора 0; вложенное исключение - org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean-компонента с именем 'bayeux', определенным в ресурсе пути к классу [Acontext.xml]: Невозможно разрешить ссылку на bean-компонент 'servletContext' при установке 'options' свойства bean-компонента с ключом [ TypedStringValue: значение [javax.servlet.ServletContext], целевой тип [null]]; вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: bean-компонент с именем 'servletContext' недоступен - person Lisa.liu; 12.03.2019
comment
Пример CometD Spring Boot действительно работает. Я предлагаю вам начать с этого: скопируйте / вставьте его и заставьте его работать в вашей среде. Затем вы медленно меняете его в соответствии со своими потребностями. StackOverflow - не подходящее место для отладки сбоев, поэтому вы можете открыть проблему в проекте CometD: github .com / cometd / cometd / issues. - person sbordet; 12.03.2019
comment
Моя версия загрузки Spring - 1.15.13, и я отлаживаю в application.java, она никогда не переходит в какой-либо метод @bean. Итак, я предполагаю, что мой проект не инициализирует servletContext, возможно, он не имеет отношения к серверу Cometd. Кто может мне помочь ? - person Lisa.liu; 12.03.2019