Весеннее развертывание загрузки с Tomcat - PullRequest
0 голосов
/ 19 февраля 2020

В настоящее время я работаю над развертыванием приложения, но по какой-то причине оно, похоже, не работает идеально.

Во время кодирования я запускаю / отлаживаю проект с помощью Intellij Spring Boot runner, который легко настроить .

Поскольку мне нужно развернуть на сервере Tomcat, я попытался сначала установить в Intellij сервер Tomcat Runner, прежде чем запускать мою войну напрямую с моего сервера Tomcat.

Проблема заключается в следующем: запуск Кажется, не работает должным образом. Фактически, приложение не запускается полностью, даже если развертывание не возвращает никакой ошибки.

Вот выходные данные бегуна Spring Boot:

2020-02-19 11:50:18.373 DEBUG 1192 --- [  restartedMain] com.myapp.Application              : Running with Spring Boot v2.2.4.RELEASE, Spring v5.2.3.RELEASE
2020-02-19 11:50:18.374  INFO 1192 --- [  restartedMain] com.myapp.Application              : No active profile set, falling back to default profiles: default
2020-02-19 11:50:18.421  INFO 1192 --- [  restartedMain] o.s.b.devtools.restart.ChangeableUrls    : The Class-Path manifest attribute in C:\Users\user\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.2\jaxb-runtime-2.3.2.jar referenced one or more files that do not exist: file:/C:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jakarta.xml.bind-api-2.3.2.jar,file:/C:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/txw2-2.3.2.jar,file:/C:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/istack-commons-runtime-3.0.8.jar,file:/C:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/stax-ex-1.8.1.jar,file:/C:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/FastInfoset-1.2.16.jar,file:/C:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jakarta.activation-api-1.2.1.jar
2020-02-19 11:50:18.422  INFO 1192 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2020-02-19 11:50:18.422  INFO 1192 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2020-02-19 11:50:19.223  INFO 1192 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2020-02-19 11:50:19.288  INFO 1192 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 57ms. Found 1 JPA repository interfaces.
2020-02-19 11:50:19.807  INFO 1192 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-02-19 11:50:20.115  INFO 1192 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8081 (http)
2020-02-19 11:50:20.125  INFO 1192 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-02-19 11:50:20.125  INFO 1192 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.30]
2020-02-19 11:50:20.233  INFO 1192 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
etc.
2020-02-19 11:50:24.396  INFO 1192 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-02-19 11:50:24.399  INFO 1192 --- [  restartedMain] com.myapp.Application              : Started Application in 6.531 seconds (JVM running for 7.815)

И выходные данные бегуна Tomcat:

2020-02-19 12:14:15.753  INFO 4436 --- [on(3)-127.0.0.1] com.myapp.Application              : Starting Application on UO with PID 4436 (C:\App\apache-tomcat-8.0.47\webapps\server_war\WEB-INF\classes started by user in C:\App\apache-tomcat-8.0.47\bin)
2020-02-19 12:14:15.757 DEBUG 4436 --- [on(3)-127.0.0.1] com.myapp.Application              : Running with Spring Boot v2.2.4.RELEASE, Spring v5.2.3.RELEASE
2020-02-19 12:14:15.760  INFO 4436 --- [on(3)-127.0.0.1] com.myapp.Application              : No active profile set, falling back to default profiles: default
2020-02-19 12:14:15.937  INFO 4436 --- [on(3)-127.0.0.1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 113 ms
2020-02-19 12:14:15.994  INFO 4436 --- [on(3)-127.0.0.1] com.myapp.Application              : Started Application in 1.045 seconds (JVM running for 7.228)
[2020-02-19 12:14:16,029] Artifact server:war: Artifact is deployed successfully
[2020-02-19 12:14:16,029] Artifact server:war: Deploy took 5,204 milliseconds

Как видите, Spring запускает исправление, но, похоже, не выполняет все свои начальные задачи.

У меня уже есть Spring-boot-starter-tomcat, предоставленный в моем pom и здесь мой Application.class:

@SpringBootApplication public class Application extends SpringBootServletInitializer {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

  @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(Application.class);
  }
}

Мои вопросы: я что-то упустил в своей конфигурации? Как правильно запустить все с Tomcat с несколькими профилями (в настоящее время я использую параметры виртуальной машины в бегуне)?

Ответы [ 3 ]

1 голос
/ 19 февраля 2020

Spring Boot Framework сам по себе инкапсулирует интегрированный Tomcat, чтобы упростить реализацию без необходимости создавать .war и реализовывать собственный Tomcat традиционным способом, просто используя, например, плагин Maven и выполняя его. пришлось бы использовать mvn spring-boot: run.

Однако, если вы хотите именно этого, вы должны сгенерировать войну из своего проекта Spring Boot с помощью maven, а затем добавить войну в папку tomcat webapps и теперь Вы можете запустить Tomcat локально для тестирования. Следуйте инструкциям, включенным в документацию, и у вас не должно возникнуть проблем.

https://www.baeldung.com/spring-boot-war-tomcat-deploy

Для настройки различных профилей для развертывания необходимо настроить Tomcat catalina. Файл .properties, чтобы не повторяться много раз, взгляните на следующий поток:

Как указать профиль при развертывании файла загрузки Spring Spring в Tomcat?

Надеюсь, это поможет вам!

0 голосов
/ 25 февраля 2020

Я нашел решение своей проблемы, каким-то образом (вероятно, скопировав / вставив из другого объявления зависимости впереди), я установил зависимость spring-boot-autoconfigure на Обеспеченный, но мой кот не имеет этой зависимости. Поэтому мне просто пришлось удалить предоставленную область, и все было исправлено.

0 голосов
/ 25 февраля 2020

Можете ли вы показать свой пом. xml? Попробуйте добавить

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

, чтобы получить более подробный вывод при запуске, попробуйте установить свойства ведения журнала https://www.javadevjournal.com/spring-boot/logging-application-properties/

, кроме того, что Tomcat, который запускается, является "apache -tomcat-8.0.47 ", и ваш движок сервлета работает на Apache Tomcat / 9.0.30

Если ваш родительский pom включен на 2.2.4, то RELEASE ваш pom будет зависеть от Tomcat 9. Spring Boot также настроит Tomcat для вас (отсюда и ваши зависимости), по крайней мере, если вы запустите его на своем локальном компьютере как приложение Spring Boot.

...