У меня есть проект с несколькими модулями, и это проект tomcat. Мне нужно преобразовать его в проект весенней загрузки.
Вот файл xml с bean-компонентом: Я использовал @ImportResource("classpath:xxx.xml").
Здесь выдает исключение:
ПРИЛОЖЕНИЕ НЕ ЗАПУЩЕНО
Описание:
Параметр 0 конструктора в xxxService требует bean-компонента с именем 'servletContext', который не может быть найден.
Действие:
Рассмотрите возможность определения bean-компонента с именем 'servletContext' в вашей конфигурации.
Я понятия не имею об этой проблеме почти три дня. Пожалуйста, помогите мне, если у вас есть опыт по этому поводу, большое спасибо!
Ниже приведены параметры XML-файла о байе.
scaAnnotationConfigApplicationContext: Исключение во время инициализации контекста — отмена попытки обновления: org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания bean-компонента с именем «bayeuxServer», определенным в com.citi.pf.realtime.PFRealtimeServicesApplication: неудовлетворенная зависимость, выраженная через метод параметр 'bayeuxServer' 0; вложенным исключением является org.springframework.beans.factory.NoSuchBeanDefinitionException: нет подходящего bean-компонента типа 'javax.servlet.ServletContext':
ожидается по крайней мере 1 bean-компонент, который квалифицируется как кандидат на автопроводку. Аннотации зависимостей: {}
Я удалил файл xml и создал метод bean-компонента в приложении для cometd. Ниже приведены ошибки.
*************************** ПРИЛОЖЕНИЕ НЕ ЗАПУЩЕНО ******************* ******** Описание: Параметр 0 метода bayeuxServer в com.citi.pf.realtime.PFRealtimeServicesApplication требует bean-компонента типа 'javax.servlet.ServletContext', который не может быть найден. Действие: рассмотрите возможность определения bean-компонента типа 'javax.servlet.ServletContext' в вашей конфигурации.




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